Game!

 

 

Anchor point 와 Rect의 관계

 

 

 

코딩하다, 움직이는 객체끼리 충돌처리를 해야하는 상황이 있었다.

 

스프라이트의 크기보다 1/2 작은 Rect 충돌 범위를 맞추려고 하다가

 

충돌이 엉뚱하게되는 버그가 생겼다

 

이 버그를 잡느라ㅏ 2일 꼬박 고민했는데 이것이 문제였다...

(코코스에선 Rect 범위 출력해주는 기능이 없다.)

 

 

 

 

 

코코스의 좌표계다

왼쪽 하단부분이 0,0 으로 시작한다

 

스프라이트를 출력하다보면 앙크포인트 기본이 0.5 , 0.5 로 되어있는데

setAnchorPoint 함수로 앙크포인트 위치를 정할 수 있다

 

4가지로 나뉘는데, 이 게시글에선 생략한다.

 

 

문제는 앙크포인트와 Rect 출력에 대한 것이다.

 

 

 

 

 

 

코코스에서 Rect를 출력하면 좌표계 기준에 맞게 출력을한다

 

즉, x, y 위치가 rect 의 x, y 가 되는 것이고 그 좌표기준으로 오른쪽으로 width , 위쪽으로 height 라는 것이다.

 

 

 

 

중요한 것은,

 

스프라이트 앙크포인트가 0, 1 이고, 좌표가 x, y 일때

x, y 위치에서 앙크포인트 기준으로 그림은 하얀색 사각형으로 출력된다

 

하지만 Rect로 스프라이트의 크기를 출력할 경우 (바운딩박스 사용X)

x, y 좌표 기준으로 코코스 좌표계에 따라 출력이되서(분홍색 사각형) 예상치못한 버그가 생겼던 것이다