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 caminos. else le da a un if un segundo camino, y se ejecuta exactamente uno de los 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 solo = asigna un valor a una variable. direction == 0 es verdadero cuando no se mantiene pulsada ninguna tecla.
Un valor bajo de friction, como 300, hace que se deslice como sobre hielo. Uno alto, como 2400, lo detiene en unos pocos fotogramas.
Desafío
IntermedioHaz que el personaje se detenga rápidamente cuando lo sueltes.
- Pon la línea
move_towarddebajo deelse:. - Encima, debajo de
if direction == 0:, reducevelocity.xa0mediantefriction * deltaconmove_toward.
Pulsa «Jugar», corre y suéltalo: el personaje se desliza un poco y después se detiene. Después, pulsa «Comprobar».
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()
Todas las lecciones de Entrada y movimiento
1Acciones de entrada
Presiona para moverteIzquierda y derechaUn ejeCuatro direccionesRecién presionadoEntrada no gestionada4Movimiento fluido
Acelerar poco a pocoFricciónMirar hacia donde te muevesLimitar al área de la pantallaLimitar ambos ejesPractica por tu cuenta: Playground de Godot