본문 바로가기

블루프린팅/9. 인공지능

[09인공지능] 비헤이비어 트리에 조건추가

적에게 플레이어를 추적하게 하는 탯그크에 접속할 다른 시퀀스와 노드와 두개의 시퀀스노드중 하나를 실행하는 셀렉터 노드가 필요하다. 새로운 태스크는 적이 플레이어를 볼 때문 실행되도록 해야 한다. 이를 위해 데코레이터를 추가한다. 데코레이터는 노드 상단에 부탁돼 작업을 수행하기 전에 충족해야 하는 조건을 제공한다.

1. BT_EnemyBehavior에셋을 연다.

2. Root노드 중앙을 우클린 모든 핀 링크 끊기를 선택한다. ALT클릭으로 끊어도 된다.

3. Root에서 Selector노드를 만든다.

4. 셀렉터노드에서 기존의 MoveToPatrol노드를 연결한다.

5. 셀렉터 노드에서 왼쪽아래 시퀀스노드를 추가하고 AttackPlayer로 이름을 변경한다.

6. 이제 데코레이터를 사용 적이 플레이어를 볼 수 있는지 확인한다.  AttackPlayer를 우클릭해서 데코레이터 추가에서 Blackboard를 선택해 Decorator를 추가한다.

7. Decoratr 디테일패널에서 관찰자 중단 항목을 Lower Priority로 블랙보드키를 PlayerCharacter로 노드이름을 Can see Player로 세팅한다.

8. 비헤이비어 트리를 저장한다. 이 데코레이터는 Player Character키에 레퍼런스가 있는 경우만 노드를 실행할 수 있다 .또한 MovetoPatrol시퀀스를 중단하고 AttackPlayer시퀀스를 실행한다.

적이 플레이어를 추격하기 위해 누락된 부분은 공격 플레이어 시퀀스의 태스크 노드 뿐이다.

 

추적 비헤이비어 생성

적이 플레이어를 추적하도록 하기 위해 플레이어 캐릭터 참조를 대상으로하는 MoveTo노드를 사용한다. Wait노드를 사용해 일시정지를 만들고 BTtask_ClearBBValue태스트를 사용해 PlayerCharacter레퍼런스를 클리어 한다.

1. AttackPlayer노드에 MoveTo노드를 추가후 디테일 패널에서 블랙보드키를 PlayerCharacter로 변경한다.

2. AttackPlayer 시퀀스 노드에서 와이어를 끌어 Wait노드를 추가후 대기를 2.0초로 한다.

3. AttackPlayer 시퀀스 노드에서 다른 와이어를 끌어 BTTask_ClearBBValue작업노드를 추가한다. 디테일 패널에서 키를 PlayerCharacter로 변경하고 노드 이름을 Reset Player seen으로 변경한다.

4. 비헤이비어 트리를 저장하고 레벨에디터에서 플레이해서 적의 동작을 테스트 한다. 순찰을 도는 적이 앞에 플레이어를 감지하면 순찰을 멈추고 플레이어를 추적한다. 플레이어에 도달하면 2초간 정지하고 다시 순찰 경로로 돌아간다.