Hemo añadido nuestro jugador, en este caso una nave espacial, a nuestra escena principal.
También hemos añadido dos botones en pantalla, para movernos a la derecha o a la izquierda, que son los unicos movimientos que dejamos a nuestros jugadores.
En nuestra escena principal hemos añadido los botones para gestionar cuando se presionan y se sueltan:
func _on_button_right_pressed():
move(1)
func _on_button_left_pressed():
move(-1)
func _on_button_right_released():
move(0)
func _on_button_left_released():
move(0)
func move(direction):
Globals.ismoving = direction
Y le pasamos el movimento, 0 parado, 1 derecha, -1 izquierda, a una clase Global que tenemos.
Luego en la escena de nuestro jugador, hemos añadido un script, en el cual, miramos en la función _physics_process si alguno de los botones esta pulsado o no.
En caso de estar pulsado a la derecha, movemos a la derecha hasta un limite, y si esta pulsado a la izquierda, lo mismo pero a la izquierda, indicando el limite.
func _physics_process(delta):
movingPlayer(Globals.ismoving, delta)
func movingPlayer(movement, delta):
if movement == 0 :
pass
else :
if movement == 1 && position.x <= endX :
position.x = move_to(position.x, endX, speed * delta)
elif movement == -1 && position.x >= startX :
position.x = move_to(position.x, startX, speed * delta)
func move_to(current, to , step):
var new = current
# are we moving positive?
if new < to:
new += step
if new > to:
new = to
# are we moving negative?
else:
new -= step
if new < to:
new = to
return new
Seguramente no es la manera más optima de implementar el movimiento del jugador, pero nos ha parecido una manera sencilla y educativa en la que ver los pasos necesarios para el movimiento.