我在我的简单平台游戏中有一个脚本,它说如果我的玩家在地面上并且按下“Z”,他在 Y 轴上的移动将上升到 600,如果他不在地面上,他会去执行跳跃动画。
所以事情是这样的,我知道它只播放跳跃动画的第一帧,因为代码不断检测玩家在空中。我想要一种方法来告诉代码只触发一次动画。
我尝试使用一个名为的函数,input_(event):
但它似乎没有is_action_just_pressed
输入类型,只是is_action_pressed
.
我对 Godot 还很陌生,不知道如何使用信号。信号可能通过 提供帮助animation_finished()
,尽管该功能可能与我在代码中实际想要做的事情无关。
这是我的代码:
extends KinematicBody2D
#Variables van aquí
var movimiento = Vector2();
var gravedad = 20;
var arriba = Vector2(0, -1);
var velocidadMax = 600;
var fuerza_salto = -600;
var aceleracion = 5;
var saltando = false;
func _ready(): # Esto es void Start()
pass;
func _physics_process(delta): #Esto es void Update()
movimiento.y += gravedad;
if Input.is_action_pressed("ui_right"):
$SonicSprite.flip_h = true;
$SonicSprite.play("Walk");
movimiento.x = min(movimiento.x +aceleracion, velocidadMax);
elif Input.is_action_pressed("ui_left"):
$SonicSprite.flip_h = false;
$SonicSprite.play("Walk");
movimiento.x = max(movimiento.x-aceleracion, -velocidadMax);
else:
movimiento.x = lerp(movimiento.x, 0, 0.09);
$SonicSprite.play("Idle");
if is_on_floor():
if Input.is_action_just_pressed("z"):
movimiento.y = fuerza_salto;
else:
$SonicSprite.play("Jump");
movimiento = move_and_slide(movimiento, arriba)