我正在尝试为大学项目编写视频游戏。我从播放器控件开始,但空格键输入有问题。它有时只注册输入,我还使用了 ceck 变量来查看是否是跳转代码的问题,但我发现 Unity 并没有很多时候注册输入。
public bool control;
forzaSalto = 300;
Rigidbody2D player;
float? asseY;
public bool saltando;
void Awake()
{
player = GetComponent<Rigidbody2D>();
player.Sleep();
}
private void FixedUpdate()
{
if ((verticale != 0 || orizzontale != 0) && !accovacciato)
{
Vector3 movimento = new Vector3(orizzontale * velocita, verticale * velocita, 0.0f);
transform.position = transform.position + movimento * Time.deltaTime;
}
Gira(orizzontale);
if (transform.position.y <= asseY && saltando)
{
Atterraggio();
}
if (Input.GetButtonDown("Jump")){
control = !control;
}
if (Input.GetButtonDown("Jump") && !saltando)
{
asseY = transform.position.y;
saltando = true;
player.gravityScale = 1.5f;
player.WakeUp();
player.AddForce(new Vector3(transform.position.x + 7.5f, forzaSalto));
}
}
我尝试调整跳跃代码,但它仍然不起作用,然后我使用 ceck 变量来查看问题是 Unity 没有看到我的空格键输入。与控制器也不起作用。它有时只记录输入。我正在使用 Unity 2022
在
FixedUpdate()
中,处理来自物理引擎的所有更新。这仅以规则(固定)帧/时间间隔发生。由于您不使用物理引擎进行运动,因此不需要使用FixedUpdate()
。
尝试使用
Update()
,因为 Unity 可能会错过一些输入或使用 FixedUpdate()
处理它们太晚。