AI Controller 의 컴포넌트 탭에서 AI Perception을 추가해 AI에게 주변 상황을 인지할 수 있는 능력을 부여할 수 있다.

 

디테일 패널의 AI퍼셉션에서 AI가 가질 수 있는 감각(시각, 청각 등)을 추가할 수 있고, 이 중 어떤것이 가장 주도적인 감각인지도 설정이 가능하다.

 

AI 시야(Sight) 인덱스 설정

시각 반경: 해당 반경 내의 것을 AI는 인지할 수 있다.

시야 상실 반경: 시각 반경 내에 들어왔던 것이라도 시야 상실 반경 밖으로 벗어나면 AI는 볼 수 없게 된다.

주변 시야 반각도: 시야각을 말하는 것으로, 반각도이므로 전체 시야각은 해당 값의 두 배를 생각하면 된다.

최대 수명: AI가 인지한 것을 기억할 수 있는 시간을 뜻한다.

플레이어 캐릭터 bp가 사용하는 애니메이션 블루프린트가 몇가지 변수를 세팅하고 간단한 스테이트 변환을 처리하는 법

 

 

ABP_PlayerCharacter은 BP_PlayerCharacter의 애님 클래스이다.

 

BP_PlayerCharacter은 현재 기본 캐릭터 메시와 기본 카메라, wasd 입력에 따른 걷기 기능을 가지고 있다.

애니메이션이 적용되어 있지 않기 때문에 입력이 없을 때에는 부자연스러운 정자세로 서 있고, 걸을 때는 정자세 상태를 유지한 채 위치만 이동한다.

 

 

아래는 캐릭터가 가만히 있을 때, 걸을 때 자연스러워 보이기 위한 애니메이션을 추가하는 방법이다.

 

 

1. 애니메이션 블루프린트(이하 ABP)를 생성하고 프리뷰 메시를 선택한다.

-프리뷰 메시는 좌측 상단에서 애니메이션 프리뷰를 보여줄 마네킹이다.

 

2. BP_PlayerCharacter(이하 캐릭터 BP)의 애님 클래스를 방금 생성한 ABP로 지정한다.

 

3. ABP이벤트그래프에 아래 노드를 추가한다.

 

-본 ABP를 소유하는 액터를 불러오고, 캐릭터BP로 형변환해 Player Character이라는 이름의 변수로 만든다.

-Player Character의 Character Movement component를 get해 character Movement라는 이름의 변수로 만든다.

-위 두 단계로 Player Character, Character Movement를 셋하고 원할 때마다 불러올 수 있게 된다.

 

Character Movement Component에 대한 이해는 공식 문서를 참고.

https://dev.epicgames.com/documentation/en-us/unreal-engine/understanding-networked-movement-in-the-character-movement-component-for-unreal-engine

 

4. ABP의 애님그래프에 'Locomotion'이라는 State Machine을 추가하고 output pose에 연결한다.

-locomotion은 한 상태에서 다른 상태/한 장소에서 다른 장소로 이동할 수 있는 능력이나 이동을 말한다. 플레이어의 상태를 저장하는 데 쓰이는 상태 머신의 이름으로 쓰인다.

 

5. locomotion 내에 두 개의 state를 생성하고 각각 이름을 idle, walk라고 한다. 

 

6. 각각의 state(상태) 내부에 해당 상태에 출력할 애니메이션을 추가하여 output 노드에 연결한다.

-빨간 노드는 하나의 애니메이션이다. 사진 속 노드는 Mf_idle이라는 애니메이션으로, 해당 노드를 output노드에 연결하면캐릭터 bp는 idle 상태에서 mf_idle 애니메이션을 출력하게 된다.

-초록 노드는 랜덤으로 애니메이션을 출력해 준다. 디테일 패널에서 애니메이션 시퀀스를 여러 개 추가하고 플레이 확률을 지정할 수 있다. 현재 이 노드가 아웃풋과 연결되어 있으므로 캐릭터 bp는 해당 노드 안의 애니메이션을 랜덤으로 플레이한다. 

 

7. locomotion에서 idle과 walk 상태를 양 방향 모두 화살표로 연결해 준다. 

-화살표 방향대로 상태가 변화할 수 있다. idle에서 walk상태로의 트랜지션, 반대의 경우 모두 가능하다.

-화살표 근처에 생성되는 동그란 아이콘을 클릭하여 트랜지션의 조건을 정할 수 있다.

 

8. 트랜지션 조건 찾기

-idle에서 walk로 : 플레이어 캐릭터가 이동하고 있는 경우 walk로 상태를 이행시켜주어야 한다. 

-walk에서 idle로 : 플레이어 캐릭터가 이동하지 않는 경우 idle로 상태를 이행시켜주어야 한다.

따라서 플레이어 캐릭터의 속력(speed)이 0을 초과하는 경우 walk, 캐릭터의 속력이 0인 경우 idle상태라고 볼 수 있다. 

 

9. 트랜지션 조건 세팅하기

-플레이어의 speed라는 변수는  abp의 이벤트 그래프에서 만든다.

-speed와 0의 크기비교 불리언은 상태 간의 이행 규칙 내부에서 설정한다. 

 

 

 

 

즉, abp로 플레이어의 상태를 정의하고, 각 상태에 적절한 애니메이션을 배치하고, 상태간 이행을 연결하고, 이행 규칙을 정할 수 있다.

UE5에서 기본적으로 제공하는 tps 모드를 사용하면 기본적으로 플레이어 캐릭터가 보는 방향과 상관없이 카메라를 이리저리 돌릴 수 있다. 

 

이 경우 플레이어가 바라보는 방향과 플레이어 캐릭터가 이동하는 방향이 다를 수도 있다. 

대부분의 tps게임처럼 플레이어가 화면을 통해 보는 방향과 플레이어 캐릭터가 바라보는(+조준하는)방향이 일치하도록 하고 싶은 경우 다음 세팅을 한다.

 

 

 

1. 플레이어 캐릭터 블루프린트를 연다

ue5 기본 tps 모드인 경우 BP_ThirdPersonCharacter 파일을 연다. 

 

2. 디테일 창에서 'orient rotation to movement'를 찾아 토글을 꺼준다

한글로는 '무브먼트 방향으로 회전 조정'

 

 

3. 디테일 창에서 'Use controller rotation Yaw'를 찾아 토글을 켜준다

한글로는 '컨트롤러 회전 요 사용'

 

 

 

이제 마우스 이동에 따른 화면 방향과 플레이어 캐릭터가 보는 방향이 일치한다.

+ Recent posts