rts 게임의 selection box를 구현하다가 생긴 궁금증인데
메인 카메라의 각도를 (45, 0, 0)으로 설정해놓고
드래그로 selection box를 만들었을 때
var colliders = Physics.OverlapBox(center, halfExtents, Camera.main.transform.rotation);
위 코드로 카메라와 같은 각도의 box를 만들어서 충돌하는 오브젝트들을 검출하려고 했는데
생각한대로 실행되지 않아 기즈모로 시각화 해보니
저 초록색 박스처럼 카메라와 x축 대칭인 각도가 되어있네요
overlapbox 중심점이 박스와 평지가 맞닿는 부분의 중점이고
저는 박스가 카메라가 있는 방향으로 기울어질 줄 알았습이다
혹시 왜 이런지 이유를 알려주실 수 있을까여,,,
음.. center 구할 때 카메라의 forward로 적용하셨나여?
center는 레이캐스트로 구한 마우스 드래그 시작좌표랑 끝 좌표의 평균입니다
그러면.. 역으로 그 카메라 - 센터.정규화 하고 오리엔테이션에 넘기면 될듯?
답변 감사합이다 LookRotation으로 카메라 - 센터의 쿼터니언 구해서 해보려 했는데 잘 안돼서 일단은 반대 각도로 박아서 해결했네요
엇 그렇게 해서 안 됐나요? 흠......
저기들어가는 rotation은 카메라의 rotation이면 안되지 저 센터좌표에 halfExtents크기의 박스를 배치하고, 그 박스의 중심을 기준으로 해당 박스의 로컬 회전값이 마지막 인자로 들어가는거 그니까 카메라가 앞으로 45도 기울어져있다치면, 박스는 -45등이 되어야하는데 타메라 회전값을 그대로 쓰면 뒤로 45도가 넘어가잖음 그러니까 저렇게 나오는게 정상임 Quaternion.LookRotation으로 camera.transform.forward기준에서 바라보는 각도를 구해서 그 값을 써야할거임 - dc App
Quaternion.LookRotation(Camera.main.transform.forward, Vector3.up) 이거넣어바바 - dc App
감사합니다 일단 이상하게 방향은 똑같이 반대로 나오는데 해주신 말씀은 맞는 것 같읍니다... 제가 어쩌면 엉뚱한 부분에서 코드를 잘못 적었나 싶기도 하네요 참고해서 잘 고쳐보도록 할게요