Unity 최종 프로젝트 - 8

이준호·2024년 1월 23일
0

📌 Unity 최종 프로젝트



📌 추가사항

➔ Enemy AI - Patrol Logic

  • 랜덤 좌표를 찍고 그 위치로 이동한다.

  • 올바른 좌표가 아니라면 다시 찍는다.

  • 목적지에 도착하면 1 ~ 3초간 대기시간(유후 상태)를 가진다.

  • 대기시간이 끝나면 다시 랜덤 좌표를 찍고 이동한다.




➔ Zombie Walk Animation

  • 좀비의 순찰(Patrol)때 걷기 애니메이션을 적용하였다.

  • 일단 해당 ZombieAI 스크립트 안에서 const로 선언하여 Walk애니메이션의 값을 사용중인데 나중에 Const를 모아둔 클래스에서 받아서 사용해야한다.

  • 기본 내장된 Walk의 애니메이션 속도가 상당히 느려서 좀비의 Walk 이동속도를 0.5f로 맞춰두었다. 나중에 추적 상태로 간다면 따로 추적 애니메이션을 구해야 할거다.












📌 수정사항

➔ Zombie BT Modify

  • 좀비의 트리 구조중 순찰Selector 분기의 자식 노드에서 "올바른 목적지가 있는가?"의 대한 노드가 Until Fail의 자식으로 있었는데 이 Until Fail을 삭제하고 두 개의 노드로 나눠 검사하도록 분할하였다.
    • 목적지가 있는가?
    • 경로가 유효한가?



➔ Selector/Sequence Modify

  • Selector 와 Sequence Node가 세부 내용이 바뀌어 있어서(반환하는 타입이 서로 바뀌어 있었다.) 다시 수정하였다.











📌 트러블 슈팅

➔ Animator - Apply Root Motion

NavMeshAgent를 이용하여 agent의 UpadateRotation을 명시적으로 true라고 켜줬는데도 오브젝트가 회전을 하지 않는 일이 발생하였다.

"Apply Root Motion"을 활성화 한다면 Animator의 애니메이션 컨트롤러에서 파생된 애니메이션의 루트 모션이 캐릭터의 Transform에 자동으로 적용되므로, 캐릭터에 적용된 애니메이션에 따라서만 이동이나 회전이 일어나게 된다.

위 사진처럼 Animator의 "Apply Root Motion"이 체크가 해제되있어서 일어난 일이었다.

그리하여 체크를 해제를 하여 애니메이션의 값으로 받는게 아니고 코드로 적용하게 하여 해결하였다.

profile
No Easy Day

0개의 댓글