안녕하세요
HTML5/javascript 를 공부하고 있는 학생입니다.
이런식으로 아이언맨이 사방팔방 돌아다니면서,
오른쪽 끝에서 랜덤하게 나타나는 탱크를 쏘아 잡는 애니메이션을 만들고 있는데요.
문제는 저 포탄이 적을 맞추는 로직이, 잘못 되었는지, 적의 왼쪽 상단만 맞아야 적이 죽더라구요;
이렇게 적의 왼쪽 끝 모서리를 포탄이 지나가야 격추된 것으로 처리가 되더라구요..
제가 원하는 판정은 적 오브젝트(저 네모 부분)를 맞추는 걸 원하는건데..
그래서 제가 생각한 판정은
적과 포탄의 거리가 일정 거리가 되면, 맞은걸로 치는 겁니다.
적의 크기는 50, 50 이므로, 적의 x 좌표, y 좌표(왼쪽 상단 기준)으로부터,
25, 25 만큼 증가시킨 위치가, 바로 적의 중심 부분이 되겠지요.
이렇게 실시간으로 이동하는 적의 x+25, y+25 좌표를 얻어 내어,
적과 포탄이 25만큼 가까워지면, 적이 격추 된것으로 처리 한다는 것이 제 생각입니다..
현재 제가 쓰고 있는 격추 로직인데, 어떻게 고쳐야 할까요...
포탄 클래스에서 돌아가는 격추 로직..
if(enemy.dist(this.x,this.y) < this.width) // 적 격추
{
this.remove = true; //
cannon.cnt++; // 플레이어 점수 상승
enemy.refresh(); //
}
적 클래스에서 갖고 있는, dist 함수 원형
this.dist = function(x,y)
{
var a = Math.abs( x - this.x); // 절대값(포탄의 x 좌표 - 적의 x 좌표) = 포탄과 적의 x좌표 거리
var b = Math.abs( y - this.y); // 절대값(포탄의 x 좌표 - 적의 y 좌표) = 포탄과 적의 y 좌표 거리
return Math.sqrt(a*a + b*b); //
};
원래는 해당 오브젝트의 좌표4개로 부터 생성되는 면과 겹치면 피격으로 했었는데,
그거보단 저렇게 해보고 싶어서...
많은 조언 부탁드립니다 ㅠㅠ