Menu
CoddyTech

Friction

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

La plupart des personnages de jeu s’arrêtent plus vite qu’ils ne démarrent. Le ralentissement lorsqu’aucune touche n’est enfoncée est le frottement.

Pour utiliser un nombre différent pour l’arrêt, le code a besoin de deux chemins. else donne un deuxième chemin à if, et un seul des deux s’exécute :

if direction == 0:
	velocity.x = move_toward(velocity.x, 0, friction * delta)
else:
	velocity.x = move_toward(velocity.x, direction * speed, acceleration * delta)

== vérifie si deux valeurs sont égales. Un seul = définit une variable. direction == 0 est vrai lorsqu’aucune touche n’est enfoncée.

Une faible friction, comme 300, fait glisser comme sur de la glace. Une valeur élevée, comme 2400, permet de s’arrêter en quelques images.

challenge icon

Défi

Moyen

Fais en sorte que le héros s’arrête rapidement quand tu le relâches.

  1. Place la ligne move_toward sous else:.
  2. Au-dessus, sous if direction == 0:, ralentis velocity.x jusqu’à 0 avec friction * delta et move_toward.

Appuie sur « Jouer », cours puis relâche : le héros glisse un peu, puis s’arrête. Ensuite, appuie sur « Vérifier ».

Essayez vous-même

extends CharacterBody2D

var speed = 220
var acceleration = 900
var friction = 2400
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
	var direction = Input.get_axis("move_left", "move_right")
	velocity.x = move_toward(velocity.x, direction * speed, acceleration * delta)
	move_and_slide()

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

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