Menu
CoddyTech

Héroe: correr con fluidez

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

El héroe arranca y se detiene en un solo fotograma. Haz que acelere con acceleration y se detenga con friction:

var direction = Input.get_axis("move_left", "move_right")
if direction == 0:
	velocity.x = move_toward(velocity.x, 0, friction * delta)
else:
	velocity.x = move_toward(velocity.x, direction * speed, acceleration * delta)

Usa una acceleration de 1200 y una friction de 2400. El héroe alcanza la velocidad máxima en aproximadamente una quinta parte de segundo, así que todavía tiene espacio para correr junto al pozo.

challenge icon

Desafío

Intermedio

Haz que el héroe acelere y se detenga suavemente.

  1. Añade var acceleration = 1200 y var friction = 2400.
  2. Guarda el eje en var direction. Cuando no se mantenga ninguna tecla, aplica move_toward a velocity.x para llevarlo a 0 en incrementos de friction * delta.
  3. Cuando se mantenga una tecla, aplica move_toward a direction * speed en incrementos de acceleration * delta.

Pulsa «Jugar»: el héroe gana velocidad, se desliza un poco cuando te detienes y supera el pozo. Después, pulsa «Comprobar».

Pruébalo tú mismo

extends CharacterBody2D

var speed = 220
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

Practica por tu cuenta: Playground de Godot