extends Node2D # Declare member variables here. Examples: # var a: int = 2 # var b: String = "text" var gridPos: Vector2 = Vector2(0,0) var lastPos: Vector2 = Vector2(0,0) var anim : float = 0.0 const ANIM_SPEED : float = 0.02 # Called when the node enters the scene tree for the first time. func _ready() -> void: gridPos = get_parent().world_to_map(position) # Called every frame. 'delta' is the elapsed time since the previous frame. func _process(delta: float) -> void: var duration: float = (lastPos - gridPos).length() * ANIM_SPEED if (duration <= 0): anim = 1.0 if (anim < 1.0): anim = min(anim + delta / duration, 1.0) position = get_parent().map_pos(lerp(lastPos,gridPos,anim)) func _input(event: InputEvent) -> void: if event.is_action_pressed("game_up"): move(Vector2(0,-1)) elif event.is_action_pressed("game_up_left"): move(Vector2(-1,-1)) elif event.is_action_pressed("game_left"): move(Vector2(-1,0)) elif event.is_action_pressed("game_down_left"): move(Vector2(-1,1)) elif event.is_action_pressed("game_down"): move(Vector2(0,1)) elif event.is_action_pressed("game_down_right"): move(Vector2(1,1)) elif event.is_action_pressed("game_right"): move(Vector2(1,0)) elif event.is_action_pressed("game_up_right"): move(Vector2(1,-1)) func move(dir: Vector2): lastPos = gridPos gridPos = get_parent().find_move(gridPos,dir) anim = 0