我正在尝试在我的画布上使用 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);
}