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 va trop vite en diagonale. Vers le haut et vers la droite, sa vitesse est de Vector2(200, -200). Ce vecteur mesure environ 283 pixels, et non 200.
.normalized() conserve la direction d’un vecteur et lui donne une longueur exactement égale à 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()Le déplacement dans chaque direction se fait alors à 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 dont la longueur ne dépasse pas 1. velocity = Input.get_vector("move_left", "move_right", "move_up", "move_down") * speed garantit aussi une vitesse équitable en diagonale.
Défi
MoyenRends le héros aussi rapide en diagonale.
- Mets les deux axes dans un
Vector2:var direction = Vector2(Input.get_axis("move_left", "move_right"), Input.get_axis("move_up", "move_down")). - À la place des deux lignes
velocity, définisvelocitysurdirection.normalized() * speed.
Appuie sur « Jouer » : le héros marche à 200 pixels par seconde dans toutes les directions, y compris en diagonale. Puis appuie sur « Vérifier ».
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