Lance JS库:Spaaace教程对移动设备上的触摸输入无响应

时间:2018-06-20 19:21:26

标签: lance

开始尝试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船偶尔飞过,向我的船开枪。

Screenshot from my Pixel 2 XL

1 个答案:

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

查看更新演示:

https://spaaace.herokuapp.com/