Menu
CoddyTech

Attrito

Fa parte della sezione Input e movimento del percorso Godot di Coddy. Lezione 19 di 28.

La maggior parte dei personaggi dei giochi si ferma più velocemente di quanto acceleri. Il rallentamento quando non si tiene premuto alcun tasto è l’attrito.

Per usare un numero diverso per la decelerazione, il codice ha bisogno di due percorsi. else fornisce a if un secondo percorso e ne viene eseguito esattamente uno dei due:

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

== controlla se due valori sono uguali. Un solo = assegna un valore a una variabile. direction == 0 è vero quando non si tiene premuto alcun tasto.

Un valore basso di friction, come 300, fa scivolare come sul ghiaccio. Un valore alto, come 2400, ferma il personaggio in pochi fotogrammi.

challenge icon

Sfida

Medio

Fai fermare rapidamente l'eroe quando rilasci.

  1. Metti la riga move_toward sotto else:.
  2. Sopra di essa, sotto if direction == 0:, rallenta velocity.x fino a 0 di friction * delta con move_toward.

Premi «Gioca», corri e rilascia: l'eroe scivola un po', poi si ferma. Poi premi «Verifica».

Provalo tu

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

Tutte le lezioni di Input e movimento

Esercitati da solo: Playground Godot