node.js,socket.io移动

我正在使用node.js和socket.io创build一个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"]; }); 

感谢关注。

你的代码有bug

每当有左/右键按下时,您发送x值。 但是在服务器上,你同时读取了xy ,其中y是未定义的,然后将这些值发送给客户端,在那里你现有的x和y被更新。 由于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不能编译,因为在结束function movement时会出现double }
  • 您正在从socketPlayer1.playerImage.x发送数据并读回到socketPlayer1.x
  • 客户端只是左/右发送x ,但服务器发回xy ,客户端设置这两个值。

尝试发送所有动作xy