私は自分のキャンバスに kineticJS を使って簡単なゲームを作成しようとしています (ちょっとした練習です)。出現する敵も同様です。最後の弾丸がステージを離れるたびに、彼らは弾丸を撃ちます。
ただし、すべての敵(可変数)が2秒間隔で3発撃つようにしたいです。しかし、私は完全に立ち往生しており、それを成し遂げる方法がわかりません。
誰か私のフィドルを見て、何が起こっているか見てもらえますか? http://jsfiddle.net/eRQ3P/6/
注:573行目はループする関数です(そして30FPSごとに弾丸などを描画します)
新しい弾丸オブジェクトを作成するコードは次のとおりです:(フィドルの406行目)
function Enemybullet(destinationX, destinationY, enemySprite) {
this.id = 'bullet';
this.x = enemySprite.getX()+(enemySprite.getWidth()/2);
this.y = enemySprite.getY()+(enemySprite.getHeight()/2);
var targetX = destinationX - this.x,
targetY = destinationY - this.y,
distance = Math.sqrt(targetX * targetX + targetY * targetY);
this.velX = (targetX / distance) * 5;
this.velY = (targetY / distance) * 5;
this.finished = false;
this.sprite = new Kinetic.Circle({
x: this.x,
y: this.y,
radius: 3,
fill: 'black',
name: 'enemyProjectile'
});
this.draw = function(index) {
var mayDelete = false;
this.x += this.velX;
this.y += this.velY;
this.sprite.setAbsolutePosition(this.x, this.y);
//console.log(this.sprite.getX());
/*
if(enemyCollision(this) == true) {
mayDelete = true;
}*/
if (bulletLeftField(this.sprite) == true) {
mayDelete = true;
}
if (mayDelete == true) {
this.sprite.remove();
enemies[index].bullets.splice(0, 1);
createEnemyBullet(enemies[index]);
}
ammoLayer.draw();
}
}
そして、新しい箇条書きを提供する関数: (フィドルの 247 行目)
function createEnemyBullet(enemy) {
var blt = new Enemybullet(player.sprite.getX(), player.sprite.getY(), enemy.sprite);
ammoLayer.add(blt.sprite);
enemy.bullets.push(blt);
}