Menu
CoddyTech

Accélérer progressivement

Fait partie de la section Entrées et déplacements du Journey Godot de Coddy. Leçon 18 sur 28.

Le héros atteint sa vitesse maximale en une image et s’arrête en une image. Ça donne une impression de raideur.

move_toward(from, to, step) rapproche le nombre from de to d’au plus step, sans jamais le dépasser. move_toward(0, 220, 15) donne 15. Répétée à chaque image, cette opération donne 30, 45 et ainsi de suite jusqu’à 220.

Utilise-la sur velocity.x, en visant la vitesse demandée par les touches :

var direction = Input.get_axis("move_left", "move_right")
velocity.x = move_toward(velocity.x, direction * speed, acceleration * delta)

acceleration est la vitesse gagnée par seconde ; on la multiplie donc par delta. Avec une valeur de 900, le héros atteint 220 en environ un quart de seconde. Si aucune touche n’est maintenue, la cible est 0 et le héros ralentit jusqu’à s’arrêter.

challenge icon

Défi

Moyen

Fais accélérer et ralentir le héros en douceur.

  1. Stocke Input.get_axis("move_left", "move_right") dans var direction.
  2. Définis velocity.x avec move_toward(velocity.x, direction * speed, acceleration * delta).

Appuie sur « Jouer » et maintiens une touche fléchée : le héros accélère jusqu’à 220, puis ralentit quand tu relâches la touche. Ensuite, clique sur « Vérifier ».

Essayez vous-même

extends CharacterBody2D

var speed = 220
var acceleration = 900
var gravity = 1000
var jump_velocity = -500

func _physics_process(delta):
	velocity.y += gravity * delta
	if Input.is_action_just_pressed("jump") and is_on_floor():
		velocity.y = jump_velocity
	velocity.x = Input.get_axis("move_left", "move_right") * speed
	move_and_slide()

Toutes les leçons de Entrées et déplacements

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