Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
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
Archives
Today
Total
관리 메뉴

시작은 0부터

[Unity] 팀 프로젝트 ACC - 9/21 본문

개발일지

[Unity] 팀 프로젝트 ACC - 9/21

0base 2022. 9. 21. 22:48

오전 9시 기준 0.75(6H) 시간 동안 네비메쉬 AI 기울기 방법 모색.

어제 알게된 사실로 navMesh로 이동할 때는 transform 컴포넌트의 회전값이 아닌 navMesh가 자체적으로 가지고 있는 회전값을 사용하기 때문에 처리가 되지 않아 navMeshAgent 컴포넌트의 transform을 가져와 Rotate로 값을 설정하니 기준점이 잘 맞았다. 전방을 향해 레이를 쏴서 기울기값을 조절하는 문제로 레이를 쏘는 방향은 전방과 일치했는데 각도가 불일치하는 현상이 발생했다. Raycast 함수에 사용되는 방향 인자값에 transform.forward만 작성해서 생긴 문제로 각도를 일치시키기 위해서 현재 자신의 기울기값에 방향을 곱하는 방식으로 구현하였다.

 

Quaternion curRotation = Quaternion.Euler(rotX, nav.transform.rotation.y, nav.transform.rotation.z);

 

현재 기울기값을 담는 쿼터니언 변수를 하나 설정하여, 업데이트마다 X 회전값을 담는 rotX값(전방으로 쏜 레이가 땅을 검출해서 위쪽방향을 향해 계속 기울기 위해)을 설정하고 나머지는 자신의 기울기값을 넣는다.

 

Physics.Raycast(nav.transform.position, curRotation * nav.transform.forward, out hit, rayLength, ~layerMask

자신의 위치값을 기준으로 기울기값과 앞방향을 곱하여 방향과 각도를 설정해주고, 레이를 쏜다.

 

이 방식을 적용해서 업데이트마다 전방으로 먼저 레이를 쏴서 땅이 검출되면 오르막길로 간주하여 위쪽으로 기울고, 전방에 땅이 검출되지 않으면 아래쪽으로 레이를 쏴서 내리막길인지를 검출하고 그 외에는 X기울기값은 평지로 간주하여 0으로 만들도록 했는데 생각처럼 원활하게 움직이지 않는 것 같아 방식을 바꿔보았다.

 

Physics.Raycast(nav.transform.position + nav.transform.forward, curRotation * (nav.transform.up * -1), out hit, rayLength, ~layerMask

자신의 위치에서 앞쪽을 기준으로, 아래방향을 향해 레이를 쏜다. 다른 하나는 시작점을 구하는 부분에서 transform.forward에 *-1를 하여 뒤쪽에서 시작점을 뒤쪽을 기준으로 쏘게 하여 각각 오르막과 내리막을 검출하도록 했다. 이 식으로 했더니 앞뒤로 신나게 흔들려서 어떻게 해야 자연스럽게 움직일지를 찾아보는 중이다. 간단해 보이는 이러한 문제조차 구현하는데 시간이 많이 지체된다..

 

문제는 이 AI 기울기 문제를 해결한다고 해도, 리지드바디와 휠콜라이더를 이용해 물리적으로 움직이는 플레이어와 달리 길 위를 붙어서 네비메쉬에이전트로만 AI가 움직인다면 다소 부자연스러워보일 수 있기 때문에 중력을 지원하지 않는 네비메쉬에이전트 AI의 움직임에 별도로 물리 기능을 구현해야하는데, 이 또한 시간이 적잖이 걸릴 것 같다.

 

팀원분의 제안으로 AI의  길찾기 기능만 네비메쉬에이전트를 이용하고  AI의 이동은 네비메쉬가 아닌 직접 구현하여 리지드바디 중력값을 적용시켜보기로 하여 일단 방향을 다시 틀었다.

 

 

 

 

 

 

'개발일지' 카테고리의 다른 글

[Unity] 팀 프로젝트 ACC - 9/29  (0) 2022.09.29
[Unity] 팀 프로젝트 ACC - 9/28  (0) 2022.09.28
[Unity] 팀 프로젝트 ACC - 9/26  (0) 2022.09.27
[Unity] 팀 프로젝트 ACC - 9/22  (0) 2022.09.22
[Unity] 팀 프로젝트 ACC - 9/20  (0) 2022.09.20