ここにはすべてのフィドルがあります - http://jsfiddle.net/Ey2eK/1/
しかし、問題の部分はこれらの機能だと思います。これは、メインのゲーム ループの最後に読み込まれます。
playerBullets.forEach(function() {
if (this.x > WIDTH || this.x < 0 || this.y > HEIGHT || this.y < 0) { this.active = false;}
playerBullets = playerBullets.filter(function(bullet) {
return this.active;});
bulletUpdate(this);
bulletDraw(this);
});
OK、ここでやろうとしていることは、弾丸ごとに playerBullets 配列を循環することです。まず、範囲外かどうかを確認し、範囲外の場合は弾丸を削除します。次に、bulletUpdate をロードして弾丸の位置を更新します。この式:
bulletUpdate = function() {
this.x += this.xVelocity;
this.y += this.yVelocity;
};
ここで意図しているのは、配列内の弾丸ごとに、x 位置と y 位置が速度変数によって増加することです。
次に、弾丸の新しい位置を計算したら、bulletDraw で描画します。
bulletDraw = function() {
c.beginPath();
c.save();
c.translate(this.x,this.y);
if (deltaX < 0) {
c.rotate(this.angle);
}
else {
c.rotate(this.angle);
c.scale(-1,1);
}
c.translate(-this.x,-this.y);
c.fillStyle = "#000000";
c.rect(this.x, this.y, 2, 2);
c.fill();
c.restore();
c.closePath();
};
基本的に、新しい this.x と this.y に小さな点を描画します。
ただし、実際には、クリックするたびに、プレーヤーが現在いる場所から弾丸が再描画されるようです。説明するのは難しいですが、Fiddle をチェックしてください - http://jsfiddle.net/Ey2eK/1/ で、ゲーム エリアを数回クリックしてください。後で取り組みます)。
私が望んでいるのは、弾丸が通常の弾丸と同じように旅を続けて、最終的にゾンビを殺すことができるようにすることです.
ご協力いただきありがとうございます。私はこれで真剣に立ち往生しています。