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 maintenue est la friction.

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 l’un des deux s’exécute exactement :

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 maintenue.

Une petite valeur de friction, comme 300, fait glisser comme sur de la glace. Une grande valeur, comme 2400, arrête en quelques images.

challenge icon

Défi

Moyen

Fais en sorte que le héros s’arrête rapidement. Lorsqu’aucune touche n’est maintenue, réduis velocity.x à 0 de friction * delta par image. Lorsqu’une touche est maintenue, continue d’accélérer de acceleration.

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()
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