2

开始尝试使用Lance JS 库来构建多人游戏。我无法让Spaace 教程在我的 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 飞船偶尔会飞过并朝我的飞船开枪。

我的 Pixel 2 XL 的屏幕截图

4

1 回答 1

3

感谢您指出这个错误!

看起来它是在 Lance 中首次实现 KeyboardControls 时在 Lance 2.0.0 中引入的,并且 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);
            }
        }
    });

}

相关的提交在这里

查看更新演示:

https://spaaace.herokuapp.com/

于 2018-06-26T15:14:03.403 回答