根据玩家面对的方式改变子弹方向



我正在做一个小平台游戏。我能够让玩家向右射击,但是当我试图让它向玩家"面对"的方向射击时,转向另一个方向,子弹也会改变方向,这是我的小提琴

if(keys[13] &&Date.now()-lastFire>100){
bullets.push({
x:player.x,
y:player.y,
});
lastFire = Date.now();
}
for (var i=0;i<bullets.length;i++){
ctx.beginPath();
ctx.arc(bullets[i].x,bullets[i].y,2,0,Math.PI*2);
ctx.fill();
if(facingRight & !facingLeft ){
bullets[i].x+=10;
}
else if(!facingRight & facingLeft ){
bullets[i].x-=10;
}

}

您正在根据玩家面对的方向更新所有子弹的位置。如果要保留每个项目符号的前进方向,则必须为每个项目符号存储它。

在创建项目符号时存储位置更改 (dx):

bullets.push({
x: player.x,
y: player.y,
dx: facingLeft ? -10 : 10
})

使用以下方法绘制和更新所有项目符号:

bullets.forEach(function (bullet) {
ctx.beginPath();
cts.arc(bullet.x, bullet.y, 2, 0, Math.PI*2);
ctx.fill();
bullet.x += bullet.dx
})

注意:您使用的是&,按位和运算符,而不是您可能打算使用&&

注意 2:您可能应该将玩家面向的方向存储在单个变量中:

var LEFT = 1
var RIGHT = 2
var playerFacing = LEFT

最新更新