break the camera from its chains, and give it competition!
This commit is contained in:
parent
d57194597e
commit
91df8e2e39
3 changed files with 36 additions and 20 deletions
|
@ -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
13
objects/respawn_point.gd
Normal 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
|
||||||
|
)
|
11
objects/respawn_point.tscn
Normal file
11
objects/respawn_point.tscn
Normal 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"]
|
Loading…
Add table
Add a link
Reference in a new issue