繁体   English   中英

如何创建子弹动画? (射击游戏)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM