从侦听器获取信息并将其发送到游戏引擎的最佳方法是什么?

时间:2017-05-22 15:16:46

标签: javascript multiplayer lance

[Lance]从收听者那里获取信息并将其发送到游戏引擎的最佳方法是什么?目前正试图让Spaaaceship跟随我的鼠标。我制作了一个侦听鼠标移动的MouseControls.js并记录了光标的X和Y.然后我在客户端引擎中使用以下代码将其引入游戏引擎

this.sendInput('mouseMove', {
 cursorX: this.mouseControls.cursorPos.cursorX, 
 cursorY: this.mouseControls.cursorPos.cursorY
});

然后在游戏引擎中我尝试读取processinput方法中的第二个参数,如下所示:

inputData.inputOptions.cursorY

但是我收到错误“无法读取未定义的属性'cursorY'”。我得到其他控件的每个键每次都做同样的事情,但我不知道如何传递变量信息(cursorX / Y)。这都是修改spaaace教程btw。我应该制作一个鼠标对象吗?

更新:我已经挖得更深,学到了更多,所以我想我已经缩小了我的问题。它如下:

当游戏引擎处理输入时,它只有输入的名称而没有附加信息,这对于每次完成相同操作的按键操作都很好。但是,随着鼠标移动,一旦我收到“mouseMove”输入,我还需要从我的鼠标控制器获取鼠标X和Y位置,这在游戏引擎中是看不到的(据我所知)。那么如何在那一刻获得这些价值呢?

由于您无法看到我的代码,因此它相当于从GameEngine的processinput方法获取KeyboardControls中的“activeInput.up”值

1 个答案:

答案 0 :(得分:2)

你非常接近! :)

如果您从ClientEngine发送这样的输入:

document.addEventListener('mousemove', (e)=>{
    this.sendInput('mousePos', { x: e.clientX, y: e.clientY });
})

然后在GameEngine中,您可以通过options属性访问它:

processInput(inputData, playerId) {
    super.processInput(inputData, playerId);
    console.log(inputData.options.x, inputData.options.y);
}

参考:Lance docs

相关问题