开始尝试Lance JS library来构建多人游戏。我无法获得Spaace tutorial来接受我的Android设备(运行Android 8.1.0的Pixel 2 XL)上的输入。游戏在我的笔记本电脑上运行良好。
将手机连接到笔记本电脑时,我在Javascript控制台中看到以下错误消息:
bundle.js:60989 Uncaught TypeError: Utils.shortestArc is not a function
at MobileControls.handleMovementInput (bundle.js:60989)
at onRequestAnimationFrame (bundle.js:60921)
在MobileControls.js中替换此行
const Utils = require('../common/Utils');
与此行
import Utils from '../common/Utils';
修复了该TypeError。
但是游戏仍然无法响应触摸输入。游戏开始运行,AI船偶尔飞过,向我的船开枪。
答案 0 :(得分:3)
感谢指出此错误!
Lance 2.0.0似乎是在Lance中首次实现KeyboardControl时引入的,而Spaaace教程已更新为使用它们。
该解决方案的第一步是引入您所提到的ES6样式的导入。 额外的步骤是遵循KeyboardControls的相同逻辑,并将输入的实际发送注册到服务器。只要手指触摸屏幕,相关输入(上+计算出的左或右)就被认为是“活动”的,然后被发送。
主要代码:
constructor(clientEngine){
....
this.clientEngine.gameEngine.on('client__preStep', ()=>{
for (let keyName in this.activeInput){
if (this.activeInput[keyName]){
this.clientEngine.sendInput(keyName);
}
}
});
}
相关的提交是here
查看更新演示: