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 |
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