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.
Desafío
IntermedioHaz que el héroe acelere y se detenga suavemente.
- Añade
var acceleration = 1200yvar friction = 2400. - Guarda el eje en
var direction. Cuando no se mantenga ninguna tecla, aplicamove_towardavelocity.xpara llevarlo a0en incrementos defriction * delta. - Cuando se mantenga una tecla, aplica
move_towardadirection * speeden incrementos deacceleration * 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
2CharacterBody2D
CharacterBody2DCamina con velocidadLas paredes te detienenCamina por todas partesDiagonales equilibradas5Proyecto: Héroe de plataformas
Héroe: correrHéroe: saltarPractica por tu cuenta: Playground de Godot