gpt4 book ai didi

JavaScript 游戏;阵列中的子弹;当我射击时,无论玩家在哪里,阵列中的所有子弹都会重新发射

转载 作者:行者123 更新时间:2023-11-29 10:47:40 26 4
gpt4 key购买 nike

这里有一个 fiddle - 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/然后在游戏区域中点击几次,你会看到(不要担心子弹只会朝一个方向移动,我稍后会处理)。

我想要的是让子弹像普通子弹一样继续它们的旅程,以便最终我可以用它们杀死僵尸。

感谢您提供的任何帮助!我真的坚持这个。

最佳答案

JSFiddle

主要问题是您没有在单击时实例化新的 Bullet 对象。您只是一遍又一遍地重新定义 Bullet 函数的值。

createBullet() 应该看起来更像:

function createBullet() {
var bullet = new Bullet();
playerBullets.push(bullet);
}

但是由于每个项目符号都有很多实例,所以您实际上可以用 bulletDraw/bulletUpdate 替换 draw/update 函数,并在 forEach 调用中调用它们。

function Bullet() {
....
this.bulletUpdate = function() { ... }
this.bulletDraw = function() { ... }
}

// bullet refers to the current bullet that you're iterating over.
playerBullets.forEach(function(bullet) {
if (bullet.x > WIDTH || bullet.x < 0 || bullet.y > HEIGHT || bullet.y < 0) {
bullet.active = false;
}
playerBullets = playerBullets.filter(function(bullet) {
return bullet.active;
});

bullet.bulletUpdate();
bullet.bulletDraw();
});

关于JavaScript 游戏;阵列中的子弹;当我射击时,无论玩家在哪里,阵列中的所有子弹都会重新发射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16617525/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com