Menu
CoddyTech

Enciende el motor

Parte de la sección Proyectos del Journey de Godot de Coddy. Lección 12 de 36.

La flecha hacia arriba enciende el motor y empuja la nave en la dirección hacia la que apunta su proa. Vector2.UP es (0, -1). rotated(rotation) gira esa flecha según cuánto haya girado la nave:

if Input.is_action_pressed("move_up"):
	velocity += Vector2.UP.rotated(rotation) * THRUST * delta
position += velocity * delta

El motor cambia la velocidad, no la posición. Cuando sueltas la flecha hacia arriba, la nave sigue deslizándose. Para detenerte, date la vuelta y acelera en la dirección opuesta.

La nave tiene un elemento secundario oculto llamado Flame. Muéstralo mientras el motor está encendido: $Flame.visible = Input.is_action_pressed("move_up").

challenge icon

Desafío

Intermedio

Haz que el motor impulse la nave.

  1. Añade const THRUST = 300.
  2. Mientras mantienes pulsada la tecla de flecha arriba, añade Vector2.UP.rotated(rotation) * THRUST * delta a velocity.
  3. Mueve la nave con velocity * delta en cada fotograma, tanto si mantienes pulsada la tecla como si no.
  4. Muestra $Flame solo mientras mantienes pulsada la tecla de flecha arriba.

Pulsa «Jugar» y mantén pulsada la tecla de flecha arriba: la llama arde y la nave sigue deslizándose cuando la sueltas. Después, pulsa «Comprobar».

Pruébalo tú mismo

extends CharacterBody2D

const TURN_SPEED = 4.0

func _physics_process(delta):
	rotation += Input.get_axis("move_left", "move_right") * TURN_SPEED * delta

Todas las lecciones de Proyectos

Practica por tu cuenta: Playground de Godot