Я пытаюсь создать простую игру с кинетикой на моем холсте (только на практике) и сумел заставить моего игрока стрелять в пули. То же самое касается врагов, которые порождаются. Они стреляют в пулю каждый раз, когда последняя пуля покидает сцену.Стреляйте 3 пули в заданное время от каждого врага
Однако: я хотел бы, чтобы все враги (переменное число) стреляли 3 пули с интервалом в 2 секунды. Но я застрял полностью и не могу понять, как это сделать.
Может ли кто-нибудь посмотреть мою скрипку и посмотреть, что случилось? http://jsfiddle.net/eRQ3P/6/
Примечание: линия 573 является функцией петли (А рисуют пули и такой каждый 30fps)
Вот код, где я создать новый объект пули: (Line 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);
}
Это была логика синхронизации, которая в этом случае не помогла мне. Кажется, что пули стреляют с регулярным интервалом, но не в пары из 3 (поп, поп, поп .... жду ... поп, поп, поп ... и т. Д.) – CaptainCarl
Я действительно спрашивал, может быть то, что вы хотели ... Я уточню это вместо этого. – jonhopkins
Отредактировал ответ новой скрипкой и добавил измененный код внизу – jonhopkins