바로 동영상을 보고 이해하는게 빠를거 같아 제일 처음으로 동영상을 넣었습니다.
지금 캐릭터는 PC로 테스트한거라 속도가 빠르고 해서 그렇게 무섭진 않지만 잘 쫓아오는걸 보여드리기 위해 이렇게 찍어봤습니다.
기능 구현에 쓰인 파일들로는
이렇게 있습니다.
1. BP_BabyTracer
아기의 캐릭터 블루프린트로 충돌과 매쉬를 담당합다
2. BP_BabyAIConteroller
이것이 플레이어가 범위 안에 들어오면 인식하는 하게 하고 비헤이비어 트리를 통해 AI의 행동패턴을 시작하게 하는 부분입니다.
AIPerception으로 시야 범위안의 자극들을 느끼게 하고 새 자극을 느끼면 UpdatePerception 함수를 호출합니다.
아래의 옵션들로 시야 반경, 시야 상실 반경, 시야각도 등등을 조절할 수 있습니다.
그렇게 시야 범위 안에 들어오면 블랙보드에 플레이어가 들어왔는지 확인해서 적습니다.
그렇게 하는 이유는 플레이어인지 확인하지 않으면 다른 귀신이 시야에 들어오게 되면 그 귀신을 쫓아가는 상황이 벌어질 수 있기 때문입니다.
3. BT_BabyTrace
아기의 AI 행동을 트리형식으로 행동패턴을 만드는 부분입니다.
루트에서 블랙보드의 값을 가져오고 추격 시퀀스에서 데코레이트로 PlayerActorKey에 값이 있는지 확인하고 있다면 그 밑의 MoveTo를 실행하게 됩니다.
그리고 MoveTo는 BTS_PlayerActorLocation 서비스를 하나 만들고 플레이어의 위치로 MoveTo하게 만들었습니다.
4. 애니메이션
아기의 AI 행동은 다 만들고 이제 아기의 애니메이션을 만들면 끝입니다.
하지만 문제가 있습니다. 제가 그래프 팀원에게 받은 애니메이션이 행동만 되면 좋은데 위치가 이동하는 문제가 있습니다.
이게 왜 문제냐고 생각하실 수 있습니다.
그러면 아래 동영상으로 한눈에 보여드리겠습니다.
행동이 많이 이상하죠? 아기귀신의 위치가 계속 일정하지 않고 날 따라오면서 오다가 다시 뒤로 이동하고 또 빠르게 절 쫓아오고 거기다가 AI 행동도 이상해져서 마지막에 통 사이에 끼어서 쫓아오지도 않습니다.
이 문제 때문에 꽤 고민을 하고 검색을 했는데 결국 루트 모션에 대한 것을 보게 되었습니다.
루트 모션이 처음이신 분들은 아래 문서를 첨부하니 꼭 보시면 좋겠습니다= ̄ω ̄=
https://docs.unrealengine.com/4.27/ko/AnimatingObjects/SkeletalMeshAnimation/RootMotion/
루트 모션
언리얼 엔진 4 에서 루트 기반 애니메이션을 처리하는 방식을 살펴봅니다.
docs.unrealengine.com
그렇게 해서 이 문제를 해결했습니다 해피엔딩♪(^∇^*)
'언리얼엔진 - 게임 공부' 카테고리의 다른 글
옵션 창 개발 (추가로 옵션 설정 저장) (0) | 2023.07.13 |
---|---|
언리얼엔진 마켓플레이스 무료 에셋 추천 (0) | 2023.06.29 |
언리얼 엔진 공부 시작 (0) | 2023.06.28 |