이제 상태에 따른 동작을 하기위한 state 를 만들어 보자

이런걸 하나 만들어주고

이렇게 상태를 작성 할 수 있다.

상위 Add Enumerator 를 눌러 상태를 추가해 보자

 

나의경우는 

Idle, Warring, Attack, Interesting, Dead로 만들어 보겟다.

이제 blackboard에 enum을 추가하도록 하자

 

이제 AIC_AiCharacter_Base에 초기값을 세팅해주자

그리고 EnumKeyName에는 값을 "AiState" 로 세팅해 두어 blackboard 변수와 이름을 같게 해준다.

이렇게 5개의 속성별로 실행할 수 있는 뇌를 만들었다.

오른쪽에 속성에 여러가지 선택지가 있는데 원하는 것을 맞쳐야 아래 것을 실행하게 만들 수 있다.

이러한 상태를 확인하여 순외하는 것으로 좀더 뇌를 만들때 분별하여 개발이 가능하다.( 추후에 Behavior Tree 를 나누는 법을 알려 주겠다)

 

이렇게 만든 상태변화를 함수로 만들어 작동 하도록 하나씩 만들어 보자

일단 하나씩 생성해 주었

 

이제 하나씩 상태변화를 넣어 주어 보자

뭐 Idle은 일단 할 거 없어 보인다.

1. Attack부터 바꾸어 보자

타겟을 받아 맞쳐주어야 하기 때문에 blackboard에 값을 변환해 줄 것이다.

그러니 input 값으로 actor를 받아주고 blackboard에 써주도록 해보자

그다음은 뭐 behavior Tree에서 알아서 하는걸로

 

2. Warning 상태이다 (아 위에서 오타가 있엇다 warring일 warning으로 바꿔주길 바란)

Warning에는 위치값을 가지면 좋을 거 같다. 위험 표시인 만큼 피하기 위해 warning location을 주는 것으로 해보자

근데 BlackBoard도 넣어줄 곳이 없으니 같이 수정해준다

이제 넣어주도록 하자

언제나 같은 형식에 같은 이름을 해야한다는것을 주의하여야 한다.

 

3. Interesting 상태

애는 무언가 사물에 대하여 궁금증을 같는 것을 해보고 싶다.

그럼 object를 넣어서 해보자

스킵 했지만 애도 blackboard에서 하나 만들어 넣어주자

 

4. Dead 상태

이건 뭐 죽으면 되니 패스

 

이제 상태 변환을 할때 필요한 함수를 정의 하였고 다른곳에서 이 함수를 사용하여 상태변화를 할 수 있도록 넣어주도록 하자

 

 

실험을 하려 하는데 플레이어가 딱히 만들어 둔게 없다.

기본 플레이어를 복사하여 게임모드에 설정하도록 하자

이런식으로 나의 펠리어를 세팅해주고

worldsetting에 내 gamemode를 세팅해 주도록 하자

데충 된거 같다

함수 보면 머리까지 불러 왓을때 만든 함수들이 잘 있는것을 볼 수 있다.

테스트용으로 1일때는 어택 모드 2일때는 아이들 모드로 해둔다음 실행해보자

뭐였지 그 인풋이 안된다하면 

이부분을 추가해준다

 

이제 어택일때만 내위치로 오는 뇌를 심어보자

1과 2로 실험하면서 따라오고 안따라오는것을 볼 수 있다.

 

move target 이 캐릭터까지 되어있기 때문에 도착할 때까지 좀 기다려주자

잘되는것이 확인되면 다음으로 가도된다

 

블로그 이미지

Or71nH

,