platformer-game-test/src/Scripts/WarpZone.gd

27 lines
679 B
GDScript

extends Area2D
class_name WarpZone
signal player_entered
export var to_level_coord:Vector2 = Vector2(-1, -1)
export var is_exit:bool = true
const spawn_offset = 30
var initialized = false
const NON_SPECIFIED_LEVEL :=Vector2(-1, -1)
func _ready() -> void:
if not initialized: add_to_group("WarpZones")
initialized = true;
func _on_body_entered(body:Node):
if body.name == "Player" and get_parent().is_active_level:
print("Warp - exit=%s to_level=%s" % [is_exit, to_level_coord])
emit_signal("player_entered", is_exit, to_level_coord)
func get_checkpoint_position():
var factor = -1 if is_exit else 1
return position + Vector2(factor * spawn_offset, 0)