2012-01-23 20 views
0

私はシューティングゲームを作ろうとしていますが、弾丸アニメーションにはいくつか問題があります。クリックするたびに新しい弾丸オブジェクトが作成され、アニメーションが開始されますが、クリックするたびに作成された弾丸は消え、同じ弾丸が前の弾丸よりも早く始まります。だから私は各クリックの後に新しい箇条書きを作成しようとしています。基本的なシューティングゲームのロジック。ここに私のコードは次のとおりです。ここvarを追加弾丸アニメーションの作成方法は? (シューティングゲーム)

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); 
+0

こちらの回答のいずれかを受け入れることができますか? – Zeta

答えて

0

試してみてください。

var bullet = new newBullet(playerX,playerY,getAngle(),2,1,1); 
0

あなたが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は、あなたが作成した弾丸の数です。

関連する問題