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