我在Unity中使用基于wasd输入的短划线系统。
if (Input.GetKeyDown(KeyCode.W))
{
if ((Time.time - lastTapTime) < tapSpeed)
{
this.Trigger_FDodge();
Debug.Log("ForDodge");
}
lastTapTime = Time.time;
}
if (Input.GetKeyDown(KeyCode.D))
{
if ((Time.time - lastTapTime) < tapSpeed)
{
this.Trigger_RDodge();
Debug.Log("RightDodge");
}
lastTapTime = Time.time;
}
其中任何一个都是好的,但是,因为我需要能够向四个方向躲闪,所以我遇到了问题。虽然严格地仍然是双击,按下'W'然后'D'将触发闪避,当它只应用'WW'或'DD'触发时。
当我使用XNA时,有输入状态的选项,所以我可以存储并比较按下的最后一个键和当前键。
KeyboardState lastKeyboardState = KeyboardState;
Unity有办法做到这一点吗?我也曾在Unity论坛上提问,但到目前为止,没有人有答案。
答案 0 :(得分:3)
Unity3D
不支持存储整个键盘状态的AFAIK。另一方面,您不能同时拥有上次更新期间按下的所有键的列表,但您必须明确检查每个键(或者如果您使用它们,则为轴)。
所以你唯一可以做到的就是保存上次按KeyCode
:
KeyCode lastKey;
if (Input.GetKeyDown(KeyCode.D))
{
//process input
if (lastKeyCode == ...)
{
}
lastKey = KeyCode.D;
}