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