티스토리 뷰

Logical

캐릭터와 적과의 사이각

아카베리 ACABerry 2018. 8. 21. 21:17

ACABERRY와 함께하는 프로그래밍 공부

캐릭터와 적과의 사이각


3D 기초인데, 평소 유니티로 쉽게 생각해서 사용하는 부분이지요.


Quaternion.LookRotation과 아카베리라이브러리유틸을 애용하다보니 이부분을 잊고있었네요.


막상 다이렉트X 라이브러리들로 각차를 구한다거나, 면접질문이 있을때 문득 생각이 안날 수 있다고 생각하게되어 포스팅을 시작합니다.






이 부분은 제 ACABattleShip 프로젝트의 포탑회전부에서 이들을 사용해 적을 바라봐야하는 각차를 구하고 있기도 합니다.


포탑구현부는 특히 [ 포신때문에 움직일 수 없는 MAX범위 ]를 가지고 있어서, 포신이 돌아가지 않는 각일경우, 포를 원래위치로 돌려놔야하는 상황이 발생합니다. ( 월쉽에서는 항상 타겟방향을 가지고있어서 그 방향을 향해 계속 포탑회전 )


이런저런 부분에서 사용했던 내용이지만, 막상 수학적 설명을 하자면 정확한 과정을 알고있어야 하기에 한번 정리해봅니다.





DOT~


Acos( Dot( 캐릭터의 방향, 노멀라이즈( 타겟위치 - 내위치 ) ) )


가 기본 공식입니다.




먼저, 영상을 보도록 합니다.



플레이어가 랑색

적이 강색




물론, Angle()로 동일한 결과를 얻을 수 있습니다.


먼저, Dot을 활용해 


1) 자신의 캐릭터의 방향벡터를 구합니다.


MyCharacterTransform의 .foward 면 충분하겠네요.



2) 내가 타겟을 바라보는 방향벡터를 구합니다.


타겟.포지션 - 나.포지션 을 하게되면, 내 위치에서 상대 위치까지에 해당하는 벡터를 구해옵니다.


하지만 사용할 벡터는 방향벡터이므로 노멀라이즈 해줍니다.



3) 1과 2를 내적해줍니다.


내적 결과는 아래와 같습니다.




이런 상태를 이해하고나면, 이를 삼각함수( 0~1~0~-1~0 to 각도 )를 활용해 '각도'로 전환이 가능합니다.


여기에 맞는게 아크코사인이고 이를 거치면 아래와 같은 결과가 나타납니다.





dot = acos
 0 = 0

 1 = 1.57

-1 = 3.14



Acos를 덮을경우 이렇게 적과의 각차를 Rad값으로 구할 수 있습니다.


이 라디안값은 유니티의 Mathf.Rad2Deg 에 있으며,


public const float Rad2Deg = 57.29578F


값은 57.29578F입니다.


이를 곱하게되면 최종적으로 우리가 원하는 Angle값이 나타납니다.







CROSS~


좌표계를 따지며 보통 


오른손 엄지 - 검지 - 중지


순으로


결과값 - A - B


입니다.


이는, A 벡터와 B 벡터를 외적하게되면 나오는 결과값은 그 각차만큼의 Y값이 표기되어 나타납니다.


영상은 아래와 같습니다.



플레이어가 랑색

적이 강색





이런식으로, 왼쪽의 경우 -결과값이, 오른쪽의 경우 +의 결과값이 나타납니다.


무슨일일까요...?! 이부분은 좀 더 봐야할 것 같네요 :P




왼손 / 오른손 좌표계의 외적

http://3dmpengines.tistory.com/755





내가 바라보는 방향(A)보다 적(B)이 오른쪽에 있을때 +값이 되는군요 (!)




A값은 플레이어의 정면값.


B값은 타겟까지의 방향벡터( 타겟 - 나 ) 값.




다음번엔 피타고라스 시리즈를 시뮬레이션해보도록 하겠습니다.






―――― ACABERRY's STUDY ―――― ACABERRY's STUDY ―――― ACABERRY's STUDY ――――

▶대부분 퍼온 내용이기에 출처를 꼭 명시합니다.

문제되는 부분이 있다면 요청주시면 언제든 수정 & 삭제합니다.

포스팅의 목적은 공부하시는 분들이 쉽게 접하고 정답을 찾아가는데 도움을 드리고자 함입니다.

―――― ACABERRY's STUDY ―――― ACABERRY's STUDY ―――― ACABERRY's STUDY ――――




'Logical' 카테고리의 다른 글

캐릭터와 적과의 사이각  (2) 2018.08.21
[잡공부] JOB STUDY  (0) 2018.07.28
[LINK] 마샬링관련내용  (0) 2016.10.07
댓글
댓글쓰기 폼
공지사항
Total
5,446
Today
0
Yesterday
4
TAG
more
«   2021/10   »
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            
글 보관함