Attention | Topic was automatically imported from the old Question2Answer platform. | |
Asked By | copo de requeijinho |
Hi everyone. So I want to make a TBS with grid movement. I managed to make it work so far with keyboard inputs. However, I wish to use left mouse clicks instead of the keyboard (sorta like movement in Into the Breach). Here is my code so far
extends Area2D
onready var ray = $RayCast2D##Instancia o raycast
onready var tween = $Tween##Instancia o Tween
export var speed = 3##Velocidade de movimento
var tile_size = 16 ##Tamanho do tile
var target = Vector2()
var inputs = {"ui_right": Vector2.RIGHT,
"ui_left": Vector2.LEFT,
"ui_up": Vector2.UP,
"ui_down": Vector2.DOWN}##Atribui os inputs
func _ready():
position = position.snapped(Vector2.ONE * tile_size)##Snappa o player no grid
position += Vector2.ONE * tile_size / 2 ##Centraliza o player no tile
func _unhandled_input(event):##Verifica a direcao do movimento
if tween.is_active():
return##Ignora inputs enquanto roda o tween
for dir in inputs.keys():
if event.is_action_pressed(dir):
move(dir)
func move(dir):##Movimenta o jogador de acordo com o tamanho do tile
ray.cast_to = inputs[dir] * tile_size##Ve a direcao de movimento e casta o raycast
ray.force_raycast_update()##Forca o raycast
if !ray.is_colliding():
move_tween(inputs[dir])
func move_tween(dir):##Animacao
tween.interpolate_property(self, "position", position,
position + dir * tile_size, 1.0 / speed, Tween.TRANS_SINE, Tween.EASE_IN_OUT)
tween.start()