Files
engine/docs/zh/input/keyboard.md
2024-07-17 14:03:06 +08:00

2.4 KiB

order, title, type, label
order title type label
2 键盘 交互 Interact

Galacean 支持开发者随时查询当前的键盘交互实况,且调用接口十分简单。

方法

方法名称 方法释义
isKeyHeldDown 返回这个按键是否被持续按住
isKeyDown 返回当前帧是否按下过此按键
isKeyUp 返回当前帧是否抬起过此按键

快速上手

下方枚举了检测按键状态的简单示例。

class KeyScript extends Script {
  onUpdate() {
    const { inputManager } = this.engine;
    if (inputManager.isKeyHeldDown(Keys.Space)) {
      // 现在还按着空格键
    }
    if (inputManager.isKeyDown(Keys.Space)) {
      // 这帧按下过空格键
    }
    if (inputManager.isKeyUp(Keys.Space)) {
      // 这帧抬起过空格键
    }
  }
}

实战

这次就用空格键来控制愤怒的小鸟吧。

状态字典

按键状态 isKeyHeldDown isKeyDown isKeyUp
该键从上帧开始就一直按着 true false false
该键当前帧按下后就没有松开 true true false
该键在当前帧松开后又按下 true true true
该键在当前帧按下后又松开 false true true
该键在当前帧被抬起 false false true
该键没按下且没交互 false false false
不会出现这种情况 true false true
不会出现这种情况 false true false

Keys

Galacean 所枚举的键盘 Keys 与实体键盘一一对应,参考 W3C 标准,且兼容各种不同硬件的特制按键。

Keys 枚举:https://github.com/galacean/engine/blob/main/packages/core/src/input/enums/Keys.ts

W3C 标准:https://www.w3.org/TR/2017/CR-uievents-code-20170601/

键盘输入设计思路:https://github.com/galacean/engine/wiki/Keyboard-Input-design