Menu
CoddyTech

Fricción

Parte de la sección Entrada y movimiento del Journey de Godot de Coddy. Lección 19 de 28.

La mayoría de los personajes de videojuegos se detienen más rápido de lo que arrancan. La desaceleración cuando no se mantiene pulsada ninguna tecla es la fricción.

Para usar un número diferente al detenerse, el código necesita dos rutas. else le da a if una segunda ruta, y se ejecuta exactamente una de las dos:

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

== comprueba si dos valores son iguales. Un = asigna un valor a una variable. direction == 0 es verdadero cuando no se mantiene pulsada ninguna tecla.

Una friction pequeña, como 300, hace que el personaje se deslice como sobre hielo. Una grande, como 2400, lo detiene en unos pocos fotogramas.

challenge icon

Desafío

Intermedio

Haz que el héroe se detenga rápidamente. Sin ninguna tecla pulsada, reduce velocity.x a 0 en friction * delta por fotograma. Con una tecla pulsada, sigue acelerando mediante acceleration.

Pruébalo tú mismo

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 iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Entrada y movimiento

Practica por tu cuenta: Playground de Godot