Acelerar poco a poco
Parte de la sección Entrada y movimiento del Journey de Godot de Coddy. Lección 18 de 28.
El héroe alcanza la velocidad máxima en un fotograma y se detiene en un fotograma. Eso se siente rígido.
move_toward(from, to, step) mueve el número from hacia to como máximo en step, sin sobrepasarlo. move_toward(0, 220, 15) da 15. Repetido en cada fotograma, da 30, 45 y así sucesivamente hasta 220.
Úsalo en velocity.x, apuntando a la velocidad que indican las teclas:
var direction = Input.get_axis("move_left", "move_right")
velocity.x = move_toward(velocity.x, direction * speed, acceleration * delta)acceleration es la velocidad que se gana por segundo, así que se multiplica por delta. Con 900, el héroe alcanza 220 en aproximadamente un cuarto de segundo. Si no se mantiene pulsada ninguna tecla, el objetivo es 0, así que el héroe reduce la velocidad hasta detenerse.
Desafío
IntermedioHaz que el héroe acelere y desacelere suavemente.
- Guarda
Input.get_axis("move_left", "move_right")envar direction. - Establece
velocity.xconmove_toward(velocity.x, direction * speed, acceleration * delta).
Pulsa «Jugar» y mantén pulsada una flecha: el héroe gana velocidad hasta llegar a 220 y desacelera cuando la sueltas. Después, pulsa «Comprobar».
Pruébalo tú mismo
extends CharacterBody2D
var speed = 220
var acceleration = 900
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
velocity.x = Input.get_axis("move_left", "move_right") * speed
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