【Unity 键盘输入检测】
1. Input.GetKeyDown(KeyCode key)
这个方法在玩家按下指定键的那一帧返回true。它适用于触发一次性事件,如跳跃、射击或开始菜单。
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
// 玩家按下了空格键,执行跳跃动作
}
}
2. Input.GetKey(KeyCode key)
这个方法在玩家按住指定键的整个时间段内,每一帧都返回true。它适用于需要持续进行的动作,如持续移动或保持某个状态。
void Update()
{
if (Input.GetKey(KeyCode.UpArrow))
{
// 玩家按住了上箭头键,向上移动
}
}
3. Input.GetKeyUp(KeyCode key)
这个方法在玩家释放指定键的那一帧返回true。它可以用于结束一个由Input.GetKey开始的持续动作。
void Update()
{
if (Input.GetKeyUp(KeyCode.Space))
{
// 玩家释放了空格键,结束跳跃动作
}
}
4. Input.GetKey(string key)
从Unity 2019.3开始,可以使用键的名称字符串来检测按键,这使得跨平台输入更加灵活。
void Update()
{
if (Input.GetKey("W"))
{
// 玩家按住了"W"键,向上移动
}
}
- Input AXIS
对于模拟按键(如游戏手柄的摇杆),可以使用Input.GetAxis来获取按键的模拟值。
void Update()
{
float horizontal = Input.GetAxis("Horizontal");
// 使用horizontal值来处理左右移动
}
注意事项
Update vs FixedUpdate:键盘输入检测通常在Update方法中进行,因为它依赖于玩家的即时操作。而物理计算和精确的时间控制通常在FixedUpdate中进行。
玩家偏好:不同的玩家可能有不同的按键偏好,考虑提供自定义按键的功能以改善玩家体验。
多键组合:可以通过组合使用上述方法来检测多键组合,如同时按下"W"和"Space"。
移动平台:对于移动设备,考虑使用触屏输入代替键盘输入。