break the camera from its chains, and give it competition!

This commit is contained in:
Haze Weathers 2023-01-22 14:43:11 -05:00
parent d57194597e
commit 91df8e2e39
3 changed files with 36 additions and 20 deletions

View file

@ -1,33 +1,25 @@
extends Camera2D extends Camera2D
onready var resolution = Game.resolution
onready var player = get_parent().get_node("Player") onready var player = get_parent().get_node("Player")
onready var current_sector = (player.global_position / resolution).floor() onready var last_sector = Game.get_sector(player.position)
onready var last_sector = current_sector
#Scroll direction #Scroll direction
export var scroll_h = true export var scroll_h = true
export var scroll_v = false export var scroll_v = false
export var respawn_h = true
func _ready(): func _ready():
set_as_toplevel(true) set_as_toplevel(true)
Game.current_sector = current_sector Game.current_sector = last_sector
func _process(delta): func _process(delta):
#Scroll screen when player is on different sector var current_sector = Game.get_sector(player.position)
current_sector = (player.global_position / resolution).floor()
if scroll_h && current_sector.x != last_sector.x: 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 * Game.resolution.x
position.x = current_sector.x * resolution.x # Move camera if respawn_h:
last_sector = current_sector var offset = Vector2(8.0 * sign(current_sector.x - last_sector.x), 0.0)
Game.current_sector = current_sector Game.respawn_point = player.global_position
last_sector.x = current_sector.x
if scroll_v && current_sector.y != last_sector.y: 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 * Game.resolution.y
position.y = current_sector.y * resolution.y # Move camera last_sector.y = current_sector.y
last_sector = current_sector Game.current_sector = last_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()

13
objects/respawn_point.gd Normal file
View file

@ -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
)

View file

@ -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"]