我遵循了“Roll-A-Ball”的 Unity 教程,并添加了一些扩展。球现在可以跳跃,但每次跳跃的次数太多;当我按下空格键时,我只想一次接球。现在我可以按空格键 3 次,它会跳得越来越高。
if (Input.GetKeyDown(KeyCode.Space))
{
Vector3 jump = new Vector3(0.0f, 150.0f, 0.0f);
rb.AddForce(jump);
}
EDIT:
尝试稍微更改代码,但现在我只能跳一次(第一次)
private void textBox_KeyDown(object sender, KeyEventArgs e)
{
if (Input.GetKeyDown(KeyCode.Space) && jump.y <= 0.0f)
{
jump.Set(0.0f, 150f, 0.0f);
rb.AddForce(jump);
}
}
这可能有点难以理解(因为它不是分步教程,而是一个方案)。
您必须检查球何时到达地板,检查第一次按下后速度是否达到 0 或以上。一旦完成,然后设置一些布尔值(此处名为CanJump
) to true
(或者您的语言定义为 true 的任何内容)。
还需要做一些更多的检查;一旦 CanJump 设置为 true (因为你的速度现在是>= 0
),还设置一个名为的 int 变量NumJumps
到 0。并在每次跳转时增加它。这样你就可以设置CanJump
两次跳跃后变为 false,这会阻止球跳跃。
请注意,我对 Unity 3D 一无所知,但我有丰富的 3D 游戏经验(例如 Unreal Engine 1 以及 UT99 模组)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)