나는 나의 캔버스 (단지 연습)에서 kineticJS로 간단한 게임을 만들려고 노력 중이며 내 플레이어가 총알을 쏘도록했다. 산란 된 원수도 마찬가지입니다. 그들은 마지막 총탄이 무대를 떠날 때마다 총알을 쏜다.각 적으로부터 정해진 시간에 총알 세 개를 쏴라.
그러나 : 모든 적 (가변 수)이 2 초 간격으로 3 개의 총알을 쏘고 싶습니다. 하지만 난 완전히 붙어있어 어떻게 할 수있는 방법을 이해할 수 없다.
아무도 내 피들을보고 무슨 일이 일어나는지 보지 않겠습니까? http://jsfiddle.net/eRQ3P/6/
참고 : (바이올린에 선 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();
}
}
: 라인 573 루프 (그리고 글 머리 기호 및 같은 모든 30FPS 무)
여기 내가 새로운 총알 객체를 생성 코드의를하는 기능입니다
그리고 함수는 새로운 총알 제공 : (바이올린 라인 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