diff --git a/objects/camera.gd b/objects/camera.gd index 3aa61c7..6d72e06 100644 --- a/objects/camera.gd +++ b/objects/camera.gd @@ -1,33 +1,25 @@ extends Camera2D -onready var resolution = Game.resolution onready var player = get_parent().get_node("Player") -onready var current_sector = (player.global_position / resolution).floor() -onready var last_sector = current_sector +onready var last_sector = Game.get_sector(player.position) #Scroll direction export var scroll_h = true export var scroll_v = false +export var respawn_h = true func _ready(): set_as_toplevel(true) - Game.current_sector = current_sector + Game.current_sector = last_sector func _process(delta): - #Scroll screen when player is on different sector - current_sector = (player.global_position / resolution).floor() + var current_sector = Game.get_sector(player.position) if scroll_h && current_sector.x != last_sector.x: - Game.respawn_point = player.global_position + Vector2(8,0) # Set respawn point - position.x = current_sector.x * resolution.x # Move camera - last_sector = current_sector - Game.current_sector = current_sector + position.x = current_sector.x * Game.resolution.x + if respawn_h: + var offset = Vector2(8.0 * sign(current_sector.x - last_sector.x), 0.0) + Game.respawn_point = player.global_position + last_sector.x = current_sector.x if scroll_v && current_sector.y != last_sector.y: - Game.respawn_point = player.global_position + Vector2(0,-8) # Set respawn point - position.y = current_sector.y * resolution.y # Move camera - last_sector = current_sector - Game.current_sector = current_sector - -##Delete enemies when offscreen -#func _on_CullArea_area_exited(area): -# #delete offscreen enemies -# if area.is_in_group("enemy"): -# area.get_parent().queue_free() + position.y = current_sector.y * Game.resolution.y + last_sector.y = current_sector.y + Game.current_sector = last_sector diff --git a/objects/respawn_point.gd b/objects/respawn_point.gd new file mode 100644 index 0000000..b7b5792 --- /dev/null +++ b/objects/respawn_point.gd @@ -0,0 +1,13 @@ +extends Area2D + +export var match_h = false +export var match_v = true + +func _on_RespawnPoint_area_entered(area): + if area.is_in_group("player"): + if Game.get_sector(global_position) != Game.get_sector(Game.respawn_point): + var player = area.get_parent() + Game.respawn_point = Vector2( + player.global_position.x if match_h else global_position.x, + player.global_position.y if match_v else global_position.y - 10 + ) diff --git a/objects/respawn_point.tscn b/objects/respawn_point.tscn new file mode 100644 index 0000000..411d84c --- /dev/null +++ b/objects/respawn_point.tscn @@ -0,0 +1,11 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://objects/respawn_point.gd" type="Script" id=1] + +[node name="RespawnPoint" type="Area2D"] +collision_layer = 0 +collision_mask = 2 +monitorable = false +script = ExtResource( 1 ) + +[connection signal="area_entered" from="." to="." method="_on_RespawnPoint_area_entered"]