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.
Défi
MoyenFais en sorte que le héros s’arrête rapidement quand tu le relâches.
- Place la ligne
move_towardsouselse:. - Au-dessus, sous
if direction == 0:, ralentisvelocity.xjusqu’à0avecfriction * deltaetmove_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
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