extends Area2D class_name Player @onready var sprite_2d = $Sprite2D @onready var animation_player = $AnimationPlayer @export var speed: float = 250.0 const MARGIN: float = 32.0 var _upper_left: Vector2 var _lower_right: Vector2 # Called when the node enters the scene tree for the first time. func _ready(): var vp = get_viewport_rect() _lower_right = Vector2( vp.size.x - MARGIN, vp.size.y - MARGIN ) _upper_left = Vector2(MARGIN, MARGIN) # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta): var input = get_input() global_position += input * delta * speed global_position = global_position.clamp( _upper_left, _lower_right ) func get_input() -> Vector2: var v = Vector2( Input.get_axis("left", "right"), Input.get_axis("up", "down") ) if v.x != 0: animation_player.play("turn") if v.x > 0: sprite_2d.flip_h = true else: sprite_2d.flip_h = false else: animation_player.play("fly") return v.normalized()