C# 试图不允许横向和向后的联合短跑
在这个世界上,我有一个球员可以很好地移动。当玩家按下shift键时,速度增加。我有办法检查sprint,但我使用的if似乎不起作用。运动员可以向任何方向冲刺C# 试图不允许横向和向后的联合短跑,c#,unity3d,C#,Unity3d,在这个世界上,我有一个球员可以很好地移动。当玩家按下shift键时,速度增加。我有办法检查sprint,但我使用的if似乎不起作用。运动员可以向任何方向冲刺 void CheckForSprint() { if (Input.GetKeyDown(KeyCode.LeftShift) && !Input.GetKeyDown(KeyCode.S) && !Input.GetKeyDown(KeyCode.A) && !Input.GetKe
void CheckForSprint()
{
if (Input.GetKeyDown(KeyCode.LeftShift) && !Input.GetKeyDown(KeyCode.S) && !Input.GetKeyDown(KeyCode.A) && !Input.GetKeyDown(KeyCode.D))
{
speed = 6;
}
if (Input.GetKeyUp(KeyCode.LeftShift))
{
speed = 3;
}
}
使用您在问题中添加的代码 你提到了A键、S键和D键,但没有包括W键。我相信你会尝试以速度6移动角色,以防玩家按下LeftShift键(可能是你的run按钮)和W键,但忽略LeftShift键,以防它向左、向右或向后移动,然后以速度3移动 如果是这种情况,并且在按下W、S或D时希望以3的速度移动,则应使用Input.GetButton而不是GetButtonDown。原因是: GetButton:按住buttonName标识的虚拟按钮时返回true。 GetButtonDown:在用户按下buttonName标识的虚拟按钮的帧期间返回true。 因此,GetButtonDown仅在用户按下键的帧期间返回true。但在持有时会忽略。检查 因此,请尝试以这种方式编写条件:
if (Input.GetKey(KeyCode.LeftShift) && !Input.GetKey(KeyCode.S) && !Input.GetKey(KeyCode.A) && !Input.GetKey(KeyCode.D))
{
speed = 6;
} else {
speed = 3;
}
使用您在问题中添加的代码 你提到了A键、S键和D键,但没有包括W键。我相信你会尝试以速度6移动角色,以防玩家按下LeftShift键(可能是你的run按钮)和W键,但忽略LeftShift键,以防它向左、向右或向后移动,然后以速度3移动 如果是这种情况,并且在按下W、S或D时希望以3的速度移动,则应使用Input.GetButton而不是GetButtonDown。原因是: GetButton:按住buttonName标识的虚拟按钮时返回true。 GetButtonDown:在用户按下buttonName标识的虚拟按钮的帧期间返回true。 因此,GetButtonDown仅在用户按下键的帧期间返回true。但在持有时会忽略。检查 因此,请尝试以这种方式编写条件:
if (Input.GetKey(KeyCode.LeftShift) && !Input.GetKey(KeyCode.S) && !Input.GetKey(KeyCode.A) && !Input.GetKey(KeyCode.D))
{
speed = 6;
} else {
speed = 3;
}
我不确定我是否理解这个问题;玩家只允许在按住W键的情况下冲刺吗?你可能还想在使用速度的地方加入代码。在使用时更改速度可能比在另一个函数中修改速度更有意义;玩家只允许在按住W键的情况下冲刺吗?你可能还想在使用速度的地方加入代码。在使用时更改速度可能比在另一个函数中修改速度更有意义。