Acelere aos Poucos
Parte da seção Entrada e movimento do Journey de Godot da Coddy. Lição 18 de 28.
O herói atinge a velocidade máxima em um quadro e para em um quadro. Isso parece rígido.
move_toward(from, to, step) move o número from em direção a to em até step, sem ultrapassá-lo. move_toward(0, 220, 15) resulta em 15. Repetido a cada quadro, resulta em 30, 45 e assim por diante até 220.
Use isso em velocity.x, apontando para a velocidade solicitada pelas teclas:
var direction = Input.get_axis("move_left", "move_right")
velocity.x = move_toward(velocity.x, direction * speed, acceleration * delta)acceleration é a velocidade ganha por segundo, então recebe delta. Com 900, o herói chega a 220 em cerca de um quarto de segundo. Sem nenhuma tecla pressionada, o alvo é 0, então o herói desacelera até parar.
Desafio
MédioFaça o herói acelerar e desacelerar suavemente. Defina velocity.x usando move_toward, em direção a direction * speed, avançando acceleration * delta a cada quadro.
Experimente você mesmo
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()
Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.
Todas as lições de Entrada e movimento
1Ações de entrada
Pressione para moverEsquerda e direitaUm eixoQuatro direçõesRecém-pressionadoEntrada não tratada4Movimento Suave
Acelere aos PoucosAtritoVire na Direção do MovimentoLimite à TelaLimite nos Dois EixosPratique por conta própria: Playground de Godot