我正在尝试制作一款益智平台游戏。主角可以使用箭头键向上、向右、向下或向左移动。如果我举手投足,一切都很顺利。但是,如果箭头被按下,我希望角色继续移动,当我举起手指时停止。
这是我的代码:
void Update()
{
if (Input.GetKey(KeyCode.DownArrow))
{
direction = 2;
}
if (Input.GetKey(KeyCode.LeftArrow))
{
direction = 3;
}
if (Input.GetKey(KeyCode.UpArrow))
{
direction = 4;
}
if (Input.GetKey(KeyCode.RightArrow))
{
direction = 1;
}
if (Input.GetKeyUp(KeyCode.DownArrow) ||
Input.GetKeyUp(KeyCode.LeftArrow) ||
Input.GetKeyUp(KeyCode.UpArrow) ||
Input.GetKeyUp(KeyCode.RightArrow))
{
direction = 0;
}
movePacman();
}
private void movePacman()
{
switch (direction)
{
case 1:
moveRight();
break;
case 2:
moveDown();
break;
case 3:
moveLeft();
break;
case 4:
moveUp();
break;
default:
break;
}
}
如果我的手指举得不够快,我的吃豆人有时会用这个代码做两个动作。
如何解决这个问题?
-
你的运动功能(上、下、左、右(是增加速度还是改变转换的主要关键?
-
您的开关盒没有";情况0:";。你可以创建一个停止移动功能,并在情况0中提到
-
而不是保持movePacman((;在update函数中,只有当任何键都按下时才调用它。
-
您也可以直接调用按键按下的if函数中的各个移动函数。(如果单击了"向上箭头"-->moveUp((;(
-
还可以考虑使用Nested if函数。