这里有整个事情的小提琴 - 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);
});
好的,所以我在这里要做的是循环遍历 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/ 并在游戏区域中单击几次,您会看到(不要担心子弹只会向一个方向移动,我稍后会处理)。
我想要的是让子弹像普通子弹一样继续它们的旅程,这样最终我就可以和它们一起杀死僵尸。
感谢您提供的任何帮助!我严重坚持这个。