gpt4 book ai didi

javascript - node.js、socket.io 运动

转载 作者:太空宇宙 更新时间:2023-11-04 00:43:34 25 4
gpt4 key购买 nike

我正在使用node.js 和socket.io 创建一个4 人游戏。在我的游戏中,每个玩家都有自己的坐标,除了移动之外,一切都很好。我在移动 Angular 色时遇到困难。我不知道我做错了什么。我将不胜感激任何帮助。

服务器端:

    socket.on('move', function(data)
{
var w = data["dir"];
var x = data["x"];
var y = data["y"];

if(w == "down")
y += 5;

if(w == "up")
y -= 5;

if(w == "left")
x -= 5;

if(w == "right")
x += 5;

console.log(y);

io.sockets.emit("_movement",{ "X" : x, "Y" : y});


});

客户端:

window.addEventListener("keydown", movement);   

function movement(evt)
{
switch(evt.keyCode)
{
case 40:
socket.emit("move", {"y" : socketPlayer1.playerImage.y, "dir" : "down"});
break;
case 38:
socket.emit("move", {"y" : socketPlayer1.playerImage.y, "dir" : "up"});
break;
case 37:
socket.emit("move", {"x" : socketPlayer1.playerImage.x, "dir": "left" });
break;
case 39:
socket.emit("move", {"x" : socketPlayer1.playerImage.x, "dir": "right" });
break;
}
}
}
socket.on("_movement", function(data)
{
socketPlayer1.x = data["X"];
socketPlayer1.y = data["Y"];
});

感谢您的关注。

最佳答案

您的代码中有错误

每当按下左/右键时,您都会发送x值。但是在服务器上,您读取 xy,其中 y 未定义,然后将这些值发送回客户端,其中您现有的 x 和你更新了。由于 y 未定义,因此没有移动。

与上/下按键类似。

解决方案:

改进的客户端:发送 x 和 y 坐标。

window.addEventListener("keydown", movement);   

function movement(evt)
{
var dir ="nowhere";
switch(evt.keyCode)
{
case 40:
dir = "down";
break;
case 38:
dir = "up";
break;
case 37:
dir = "left";
break;
case 39:
dir = "right";
break;
}
socket.emit("move", {"x" : socketPlayer1.playerImage.x, "y" : socketPlayer1.playerImage.y, "dir": dir });
}

socket.on("_movement", function(data)
{
socketPlayer1.x = data["X"];
socketPlayer1.y = data["Y"];
});

免责声明:可能存在拼写错误。

关于javascript - node.js、socket.io 运动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35755016/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com