게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
[HTML5/javascript] 충돌 구현을 어떻게 하면 좋을까요...
게시물ID : programmer_3589짧은주소 복사하기
작성자 : 멜랑콜리함
추천 : 0
조회수 : 598회
댓글수 : 4개
등록시간 : 2014/05/29 00:45:57
안녕하세요

HTML5/javascript 를 공부하고 있는 학생입니다.


장면.png

이런식으로 아이언맨이 사방팔방 돌아다니면서,
오른쪽 끝에서 랜덤하게 나타나는 탱크를 쏘아 잡는 애니메이션을 만들고 있는데요.

문제는 저 포탄이 적을 맞추는 로직이, 잘못 되었는지, 적의 왼쪽 상단만 맞아야 적이 죽더라구요;

판정 부위.png

이렇게 적의 왼쪽 끝 모서리를 포탄이 지나가야 격추된 것으로 처리가 되더라구요..

제가 원하는 판정은 적 오브젝트(저 네모 부분)를 맞추는 걸 원하는건데..
그래서 제가 생각한 판정은



적.png

적과 포탄의 거리가 일정 거리가 되면, 맞은걸로 치는 겁니다.

적의 크기는 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개로 부터 생성되는 면과 겹치면 피격으로 했었는데,
그거보단 저렇게 해보고 싶어서...

많은 조언 부탁드립니다 ㅠㅠ
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호