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.
Desafío
IntermedioHaz que el héroe vaya igual de rápido en diagonal.
- Pon ambos ejes en un
Vector2:var direction = Vector2(Input.get_axis("move_left", "move_right"), Input.get_axis("move_up", "move_down")). - En lugar de las dos líneas de
velocity, establecevelocityendirection.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()
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