[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”值
答案 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