Menu
CoddyTech

Diagonales equilibradas

Parte de la sección Entrada y movimiento del Journey de Godot de Coddy. Lección 11 de 28.

El héroe de la lección anterior se mueve demasiado rápido en diagonal. Arriba y a la derecha producen una velocidad de Vector2(200, -200). Ese vector mide unos 283 píxeles, no 200.

.normalized() conserva la dirección de un vector y hace que su longitud sea exactamente 1. Multiplica ese valor por la velocidad:

var direction = Vector2(Input.get_axis("move_left", "move_right"), Input.get_axis("move_up", "move_down"))
velocity = direction.normalized() * speed
move_and_slide()

Después, cada dirección se mueve a 200 píxeles por segundo. Vector2(0, 0) sigue siendo cero al normalizarlo, así que el héroe se detiene.

Input.get_vector() ya devuelve una dirección cuya longitud es como máximo 1. velocity = Input.get_vector("move_left", "move_right", "move_up", "move_down") * speed también mantiene la misma velocidad en diagonal.

challenge icon

Desafío

Intermedio

Haz que el héroe vaya igual de rápido en diagonal.

  1. Pon ambos ejes en un Vector2: var direction = Vector2(Input.get_axis("move_left", "move_right"), Input.get_axis("move_up", "move_down")).
  2. En lugar de las dos líneas de velocity, establece velocity en direction.normalized() * speed.

Pulsa «Jugar»: el héroe camina a 200 píxeles por segundo en todas las direcciones, también en diagonal. Después, pulsa «Comprobar».

Pruébalo tú mismo

extends CharacterBody2D

var speed = 200

func _physics_process(delta):
	velocity.x = Input.get_axis("move_left", "move_right") * speed
	velocity.y = Input.get_axis("move_up", "move_down") * speed
	move_and_slide()
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Entrada y movimiento

Practica por tu cuenta: Playground de Godot