Menu
CoddyTech

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.

challenge icon

Défi

Moyen

Rends le héros aussi rapide en diagonale.

  1. Mets les deux axes dans un Vector2 : var direction = Vector2(Input.get_axis("move_left", "move_right"), Input.get_axis("move_up", "move_down")).
  2. À la place des deux lignes velocity, définis velocity sur direction.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()
quiz iconTestez-vous

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

Entraînez-vous par vous-même : Playground Godot