Diagonales équilibrées
Fait partie de la section Entrées et déplacements du Journey Godot de Coddy. Leçon 11 sur 28.
Le héros de la leçon précédente se déplace trop vite en diagonale. Haut et droite donnent une vitesse de Vector2(200, -200). Ce vecteur mesure environ 283 pixels de long, et non 200.
.normalized() conserve la direction d’un vecteur et lui donne exactement une longueur de 1. Multiplie-le par la vitesse :
var direction = Vector2(Input.get_axis("move_left", "move_right"), Input.get_axis("move_up", "move_down"))
velocity = direction.normalized() * speed
move_and_slide()Chaque direction entraîne alors un déplacement de 200 pixels par seconde. Vector2(0, 0) reste nul après normalisation, donc le héros s’arrête.
Input.get_vector() renvoie déjà une direction d’une longueur maximale de 1. velocity = Input.get_vector("move_left", "move_right", "move_up", "move_down") * speed garantit aussi une vitesse constante en diagonale.
Défi
MoyenFais marcher le héros à 200 pixels par seconde dans toutes les directions, y compris en diagonale. Utilise .normalized() sur une direction Vector2, ou utilise Input.get_vector().
Essayez vous-même
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()
Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Entrées et déplacements
2CharacterBody2D
CharacterBody2DSe déplacer avec une vélocitéLes murs vous arrêtentSe déplacer partoutDiagonales équilibrées5Projet : Héros de jeu de plateforme
Héros : CourirHéros : SauterEntraînez-vous par vous-même : Playground Godot