【发布时间】:2016-08-11 19:48:43
【问题描述】:
当按下两个键然后再按下第三个键时,都没有释放,Input.GetKeyDown 不知道第三个键被按下了。
这是我的代码:
public class Keys
{
internal bool leftPressed = false;
internal bool rightPressed = false;
internal bool upPressed = false;
internal bool downPressed = false;
}
public Keys keys = new Keys();
void Start () {
}
void Update ()
{
updateButton(KeyCode.LeftArrow);
updateButton(KeyCode.RightArrow);
updateButton(KeyCode.UpArrow);
updateButton(KeyCode.DownArrow);
}
void updateButton(KeyCode key)
{
if (Input.GetKeyDown(key))
{
if (key == KeyCode.LeftArrow)
keys.leftPressed = true;
if (key == KeyCode.RightArrow)
keys.rightPressed = true;
if (key == KeyCode.UpArrow)
keys.upPressed = true;
if (key == KeyCode.DownArrow)
keys.downPressed = true;
}
else if (Input.GetKeyUp(key))
{
if (key == KeyCode.LeftArrow)
keys.leftPressed = false;
if (key == KeyCode.RightArrow)
keys.rightPressed = false;
if (key == KeyCode.UpArrow)
keys.upPressed = false;
if (key == KeyCode.DownArrow)
keys.downPressed = false;
}
}
我想做的只是让玩家类在按下键时移动游戏对象。如果两个方向都被按下,它们会相互抵消并将玩家的速度设置为 0。
同时向左和向右敲击会这样做,但尝试向上或向下按不会改变此时的向上或向下值。好像 Input.GetKeyDown 只包含 2 个值而不是整个键盘键状态?
注意:即使按键盘上的两个随机键也会停止向左、向下、向上或向右更改值。
有人对我的代码有建议或修复吗? 谢谢,
【问题讨论】:
-
我知道代码没有优化,我将其作为一个小的副项目来做,以便在我进行时进行优化和优化。
标签: c# unity3d input visual-studio-2015 keycode