[英]How to create a bullet animation? (Shooter Game)
我正在尝试制作射击游戏,但子弹动画遇到了一些麻烦。 每次单击时,都会创建一个新的项目符号对象并开始动画,但是每次单击后,创建的项目符号都会消失,并且相同的项目符号会重新开始,这比以前的项目符号要快。 因此,我试图在每次单击后创建新的项目符号。 基本的射击游戏逻辑。 这是我的代码:
function newBullet(x,y,angle,speed,id,type) {
this.x = x;
this.y = y;
this.speed = speed;
this.angle = angle;
this.radians = this.angle * Math.PI / 180;
this.id = id;
this.type = type;
this.drawBullet = drawBullet;
this.moveBullet = moveBullet;
}
function moveBullet() {
this.x = this.x + Math.cos(this.radians) * this.speed ;
this.y = this.y + Math.sin(this.radians) * this.speed;
ctx.drawImage( bulletImg, this.x, this.y);
}
function drawBullet() {
bullet = new newBullet(playerX,playerY,getAngle(),2,1,1);
bullets[bullets.length] = bullet;
setInterval("bullets[bullets.length - 1].moveBullet()", 25);
}
canvas.addEventListener("mousedown",drawBullet,false);
尝试在此处添加var
:
var bullet = new newBullet(playerX,playerY,getAngle(),2,1,1);
如果要向阵列添加项目符号,则应使用push
。 这将更新bullets.length
:
function drawBullet() {
var bullet = new newBullet(playerX,playerY,getAngle(),2,1,1);
bullets.push(bullet);
setInterval(bullets[bullets.length - 1].moveBullet, 25);
}
您创建的项目符号消失的原因:您每次都替换了bullets[0]
。 新的项目符号比旧的项目符号要快,因为bullets[0].moveBullet
在每个25ms的间隔中被称为n次,其中n是您“创建”的项目符号数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.