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 va demasiado rápido en diagonal. Arriba y a la derecha dan una velocidad de Vector2(200, -200). Ese vector mide aproximadamente 283 píxeles, no 200.
.normalized() conserva la dirección de un vector y hace que su longitud sea exactamente 1. Multiplica eso 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, todas las direcciones se mueven 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 de longitud como máximo 1. velocity = Input.get_vector("move_left", "move_right", "move_up", "move_down") * speed también mantiene una velocidad equilibrada en diagonal.
Desafío
IntermedioHaz que el héroe camine a 200 píxeles por segundo en todas las direcciones, también en diagonal. Usa .normalized() en una dirección Vector2, o usa Input.get_vector().
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()
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Entrada y movimiento
2CharacterBody2D
CharacterBody2DCamina con velocidadLas paredes te detienenCamina por todas partesDiagonales equilibradas5Proyecto: Héroe de plataformas
Héroe: correrHéroe: saltarPractica por tu cuenta: Playground de Godot