Menu
CoddyTech

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 step, sin pasarse. move_toward(0, 220, 15) da 15. Si se repite en cada fotograma, da 30, 45 y así sucesivamente hasta llegar a 220.

Úsala en velocity.x, apuntando a la velocidad que solicitan 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 ninguna tecla, el objetivo es 0, así que el héroe reduce la velocidad hasta detenerse.

challenge icon

Desafío

Intermedio

Haz que el héroe acelere y desacelere suavemente. Establece velocity.x con move_toward, hacia direction * speed, en incrementos de acceleration * delta en cada fotograma.

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