キャンバスとキャンバスのゲーム、そして現在は多かれ少なかれキャンバスゲームのW3Schools tutorialに従っています。キャンバスのマルチプレイヤーゲームでは、4つ以上のボタンを押すことはできません。
チュートリアルのある時点で、私は2人のプレイヤーを作る考えがありました。どちらも同じキーボード(NOTオンラインマルチプレイヤー)でコントロールする必要があります。
私はチュートリアルで与えられたロジックに従って、WASDと矢印の両方のキーコードを見つけました。
私は自分のコードの95%を理解しています。つまり、理解しないですべてをコピーしていないことを意味します。 (私はすぐにこれに復帰する)
私のコードの問題は、私が他のプレーヤーをシステムに追加すると、一度に1人のプレイヤーしかコントロールできないときに自由に動かすことができるということです。同時に、彼らは自由に移動することはできませんし、私は一度に合計4つのボタンを押すことができます。
スニペットを試してみて、WASDと矢印のあるキューブを使って遊んで、何を話しているのか見てみましょう。
私はこのエラーの場所かもしれない100%を理解していない部分があると言いましたか?とにかくコードスニペットでそれをマークしました。
私の質問は次のとおりです。なぜ両方のプレイヤーを同時に自由に移動できないのですか?
全体のコードは以下の通りであると私は理解していない部分にマーク:ない最高の経験のために
を、フルスクリーン機能を使用し
{
function startGame() {
myGameArea.start();
myStick = new component(100, 100, 200, 200, "red");
myStick2 = new component(100, 100, 600, 200, "green");
}
var myGameArea = {
canvas : document.createElement("canvas"),
start : function() {
var bodyID = document.getElementById("body");
this.canvas.width = bodyID.offsetWidth;
this.canvas.height = (bodyID.offsetHeight);
this.context = this.canvas.getContext("2d");
document.body.insertBefore(this.canvas, document.body.childNodes[2]);
this.interval = setInterval(updateGameArea, (1000/60));
//The part i do not understand
window.addEventListener('keydown', function (e) {
myGameArea.keys = (myGameArea.keys || []);
myGameArea.keys[e.keyCode] = true;
});
window.addEventListener('keyup', function (e) {
myGameArea.keys[e.keyCode] = false;
});
//End
},
clear : function(){
this.context.clearRect(0, 0, this.canvas.width, this.canvas.height);
}
};
function component(width, height, x, y, color, mLeft, mRight, mUpLeft, mUpRigth){
this.width = width;
this.height = height;
this.x = x;
this.y = y;
this.speedX = 0;
this.speedY = 0;
this.update = function(){
ctx = myGameArea.context;
ctx.fillStyle = color;
ctx.fillRect(this.x, this.y, this.width, this.height);
};
this.newPos = function(){
this.x += this.speedX;
this.y += this.speedY;
};
this.player1 = function(){
this.speedX = 0;
this.speedY = 0;
if (myGameArea.keys && myGameArea.keys[65]) {this.speedX = -2; } // Left
if (myGameArea.keys && myGameArea.keys[68]) {this.speedX = 2; } // Right
if (myGameArea.keys && myGameArea.keys[87]) {this.speedY = -2; } // Up
if (myGameArea.keys && myGameArea.keys[83]) {this.speedY = 2; } // Down
};
this.player2 = function(){
this.speedX = 0;
this.speedY = 0;
if (myGameArea.keys && myGameArea.keys[37]) {this.speedX = -2; } // Left
if (myGameArea.keys && myGameArea.keys[39]) {this.speedX = 2; } // Right
if (myGameArea.keys && myGameArea.keys[38]) {this.speedY = -2; } // Up
if (myGameArea.keys && myGameArea.keys[40]) {this.speedY = 2; } // Down
};
}
function updateGameArea(){
myGameArea.clear();
myStick.player1();
myStick.newPos();
myStick2.player2();
myStick2.newPos();
myStick.update();
myStick2.update();
}
}
.nm{
margin: 0;
padding: 0;
}
canvas{
display: block;
background-color: lightgray;
}
<html>
<head>
<meta charset="UTF-8">
<title>Canvas stick game!</title>
<link rel="stylesheet" href="css/standard.css">
</head>
<body id="body" onload="startGame()" class="nm" style="height: 100vh">
</body>
</html>
<script src="js/canvas.js"></script>
を**私は**同時に両方のプレイヤーを移動することができます。あなたが直面している問題は何ですか? –
はい、両方のプレイヤーを同時に動かすことはできますが、自由に動かすことはできません。例ではUPと右矢印を同時に押してから、WまたはDを押します。 :)(フルスクリーンに行くことを忘れないでください) – user1509104
申し訳ありません。私はあなたの問題を再現できません。どのブラウザを使用していますか? –