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

28 lines
711 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 _enabled:bool = false
const NON_SPECIFIED_LEVEL :=Vector2(-1, -1)
func _on_body_entered(body:Node):
if _enabled and body.name == "Player" and get_parent().is_active_level:
print("Warp %s in Level %s: exit=%s to_level=%s" % [name, get_parent().name, is_exit, to_level_coord])
_enabled = false
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)
func enabled(enabled:bool):
_enabled = enabled