node & socketi IO を使用して、単純なマルチプレイヤー ゲームを作成しています。新しいクライアントが参加すると、各クライアントの socket.id である ID を持つ新しい HTML 要素を作成します。
クライアントはモバイル デバイスであり、移動するときに「deviceorientation」値を送信して、各クライアントが HTML 要素の 1 つを制御できるようにします。ただし、私は何か間違ったことをしていますが、それは完全には理解できません。すべてのクライアントが、独自のソケット ID で HTML 要素を制御するのではなく、最新の HTML 要素を制御するために戦うためです。
サーバー上:
servio.on('connection', function (socket) {
servio.sockets.emit('newplayer',socket.id);
socket.on('move', function(data) {
socket.broadcast.emit('clientmove', data);
console.log(data.myid);
});
});
クライアントで:
iosocket.on('newplayer', function(data) {
myid = data;
$('body').append('<div class="dot _jsDot" id="'+myid+'"></div>');
});
window.addEventListener("deviceorientation", handleOrientation, true);
function handleOrientation(event) {
var absolute = event.absolute;
var alpha = event.alpha;
var beta = event.beta;
var gamma = event.gamma;
vals = {
betaVal : beta,
gammaVal : gamma,
myid : myid
}
iosocket.emit('move', vals);
}
iosocket.on('clientmove', function(data) {
var x = Math.round(data.gammaVal)*3;
var y = Math.round(data.betaVal)*3;
$('#'+data.myid+'').css({'left':x + $(window).outerWidth()/2});
$('#'+data.myid+'').css({'top':y + $(window).outerHeight()/2});
});
根本的な混乱ではなく、小さな何かを見落としていることを願っています。ノードとソケット io の経験が豊富な人がアドバイスを提供できれば、それは素晴らしいことです。