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
值。 但是在服务器上,你同时读取了x
和y
,其中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
,但服务器发回x
和y
,客户端设置这两个值。
尝试发送所有动作x
和y
。