같은편
홍익대 게임소프트웨어전공의 프로그래밍 단련 공간
같은편
깃허브 주소
https://github.com/madongchan
GitHub 아이콘
  • 분류 전체보기 (85)
    • 게임 프로그래밍 패턴 (2)
    • C# 프로그래밍 (26)
    • C++ 프로그래밍 (32)
      • 함수 (8)
      • 클래스 (22)
    • 알고리즘 공부 (2)
      • codingame 사이트 문제 (11)
    • 유니티엔진 - 게임 공부 (3)
    • 언리얼엔진 - 게임 공부 (4)
    • 쓸모 있을 수 있는 팁 (2)
    • 일상이야기 (3)

최근 댓글

태그

  • 비동기
  • DFS
  • C#
  • 클래스
  • 최단 경로
  • 람다식
  • 알고리즘
  • 예외 처리
  • 문제 풀이
  • 언리얼엔진
  • 객체
  • c++
  • 언리얼
  • 탐욕 알고리즘
  • 언리얼엔진4
  • task
  • 복사 생성자
  • 스레드
  • 함수
  • queue

인기 글

최근 글

티스토리

hELLO · Designed By 정상우.
같은편

홍익대 게임소프트웨어전공의 프로그래밍 단련 공간

플레이어가 보이면 쫓아오게 만듬(귀신 모델이니 조금 무서울 수 있음)
언리얼엔진 - 게임 공부

플레이어가 보이면 쫓아오게 만듬(귀신 모델이니 조금 무서울 수 있음)

2023. 7. 27. 11:18

바로 동영상을 보고 이해하는게 빠를거 같아 제일 처음으로 동영상을 넣었습니다.

지금 캐릭터는 PC로 테스트한거라 속도가 빠르고 해서 그렇게 무섭진 않지만 잘 쫓아오는걸 보여드리기 위해 이렇게 찍어봤습니다.

 

기능 구현에 쓰인 파일들로는

이렇게 있습니다.

1. BP_BabyTracer

아기의 캐릭터 블루프린트로 충돌과 매쉬를 담당합다

2. BP_BabyAIConteroller

이것이 플레이어가 범위 안에 들어오면 인식하는 하게 하고 비헤이비어 트리를 통해 AI의 행동패턴을 시작하게 하는 부분입니다.

AIPerception으로 시야 범위안의 자극들을 느끼게 하고 새 자극을 느끼면 UpdatePerception 함수를 호출합니다.

아래의 옵션들로 시야 반경, 시야 상실 반경, 시야각도 등등을 조절할 수 있습니다.

초록원이 시야 반경, 핑크원이 시야 상실 반경, 초록선이 시야 각도 여기선 180도 좌우로 되서 360도가 시야범위입니다.

그렇게 시야 범위 안에 들어오면 블랙보드에 플레이어가 들어왔는지 확인해서 적습니다.

그렇게 하는 이유는 플레이어인지 확인하지 않으면 다른 귀신이 시야에 들어오게 되면 그 귀신을 쫓아가는 상황이 벌어질 수 있기 때문입니다.

블랙보드
플레이어인지 확인하여 플레이어라면 블랙보드의 PlayerActorKey값에 플레이어 오브젝트를 입력하고 시야에서 벗어나면 해제합니다.

3. BT_BabyTrace

아기의 AI 행동을 트리형식으로 행동패턴을 만드는 부분입니다.

BB_BabyTrace라는 블랙보드 데이터를 포함하는 비헤이비어 트리

루트에서 블랙보드의 값을 가져오고 추격 시퀀스에서 데코레이트로 PlayerActorKey에 값이 있는지 확인하고 있다면 그 밑의 MoveTo를 실행하게 됩니다.

그리고 MoveTo는 BTS_PlayerActorLocation 서비스를 하나 만들고 플레이어의 위치로 MoveTo하게 만들었습니다.

BTS_PlayerActorLocation의 이벤트그래프

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
언리얼 엔진 공부 시작  (1) 2023.06.28
    같은편
    같은편
    책을 통해 이때까지 블로그나 유튜브에서 얻었던 지식의 파편들을 정립하고 합쳐 단단한 발판으로 만들기 위한 블로그

    티스토리툴바