유니티에서 AI를 위한 행동 트리 구축하기

Find AI Tools
No difficulty
No complicated process
Find ai tools

유니티에서 AI를 위한 행동 트리 구축하기

행동 트리(AI 프레임워크) 구축하기

목차:

  1. 소개
  2. 행동 트리란?
  3. 유니티 2019.3을 이용한 행동 트리 구성
  4. 행동 트리 클래스
  5. 선택 노드
  6. 순차 노드
  7. 예제 트리 구조
  8. 사용자 정의 노드 생성
  9. 건강 확인 노드
  10. 숨기기 시도 노드
  11. 사정거리 확인 노드
  12. 추적 노드
  13. 공격 시도 노드
  14. 커버 확인 노드
  15. 커버 이동 노드
  16. 행동 트리 구현하기
  17. 프로젝트 설정
  18. 테스트 및 디버깅
  19. 코드 정리
  20. 마치며

1. 소개

안녕하세요! 오늘은 간단한 AI 프레임워크인 행동 트리를 구축하는 방법에 대해 알아보려고 합니다. 이 AI 프레임워크를 사용하여 우리는 특정 범위에 있을 때 우리를 쫓아오는 AI를 만들고, 충분히 가까워지면 공격하고, 충분한 범위 내에서는 안전한 장소를 찾아 도망갑니다. 이 프로젝트에서는 Unity 2019.3을 사용할 것입니다.

2. 행동 트리란?

행동 트리는 노드라는 객체들의 계층 구조입니다. 각 노드는 노드 상태를 나타내는 필드를 가지며, 성공/실패/진행중 이라는 세 가지 상태 중 하나를 가질 수 있습니다. 각 노드는 evaluate라는 메서드를 구현하며, 이 메서드는 트리를 평가하고 적절한 동작을 찾기위해 호출됩니다. 이 evaluate 메서드는 노드 상태 필드 값을 설정합니다.

3. 유니티 2019.3을 이용한 행동 트리 구성

이번 프로젝트에서는 Unity 2019.3 버전을 사용하여 행동 트리를 구성할 것입니다. 각 노드는 Node라는 클래스의 객체로 나타내며, 노드 상태는 성공, 실패, 진행 중인 세 가지 값 중 하나를 가집니다. 또한 각 노드는 evaluate라는 메서드를 구현하여 트리를 평가하고 올바른 동작을 선택합니다.

4. 행동 트리 클래스

행동 트리 클래스는 성공/실패/진행 중인 세 가지 노드 상태와 evaluate 메서드로 구성됩니다. evaluate 메서드는 트리를 평가하고 적절한 동작을 선택하는 역할을 합니다.

Node 클래스에는 노드 상태 값을 설정하는 필드와 getNodeState 메서드가 있습니다. 노드 클래스에는 또한 evaluate라는 추상 메서드가 있으며, 이 메서드는 각 상속 클래스에서 자체적으로 구현됩니다.

5. 선택 노드

선택 노드는 자식 노드들의 상태에 따라 자신의 상태가 결정되는 노드입니다. 선택 노드는 자식 노드를 하나씩 평가하며, 성공 상태를 얻으면 자신의 상태를 성공으로 설정하고 나머지 노드들은 평가하지 않습니다. 만약 모든 자식 노드가 실패 상태를 가진다면 선택 노드는 자신의 상태도 실패로 설정합니다.

6. 순차 노드

순차 노드는 자식 노드를 하나씩 평가하며, 첫 번째 노드를 성공 상태로 평가하면 다음 노드를 평가합니다. 만약 다음 노드가 실패 상태라면 전체 노드는 실패 상태가 되며, 모든 자식 노드가 성공 상태를 가지면 순차 노드는 성공 상태가 됩니다.

7. 예제 트리 구조

우리가 만들 예제 트리 구조에서 최상위 노드는 선택 노드이며, 세 가지 자식 노드를 가지고 있습니다. 첫 번째 자식 노드는 커버를 확인하는 순차 노드, 두 번째 자식 노드는 공격을 시도하는 순차 노드, 마지막 자식 노드는 추적을 시도하는 순차 노드입니다.

이를 구현하기 위해 CompositeNode를 상속받은 SelectorNode 클래스와 SequenceNode 클래스를 만들겠습니다.

8. 사용자 정의 노드 생성

지금까지는 기본적인 노드들을 구성했습니다. 이제 우리 자체적인 노드들을 만들어 보겠습니다. 먼저 HealthNode를 만들어 AI의 체력을 체크할 수 있는 노드를 구성하겠습니다. 이 노드는 AI 객체의 현재 체력을 가져와서 주어진 체력 값과 비교하여 상태 값을 반환합니다.

9. 건강 확인 노드

건강 확인 노드는 AI의 체력을 체크하고, 체력이 주어진 값보다 작으면 성공을 반환하고, 그렇지 않으면 실패를 반환합니다.

10. 숨기기 시도 노드

숨기기 시도 노드는 AI 객체가 현재 숨을 수 있는 위치인지 확인합니다. 만약 AI가 커버 위치에 있으면 성공을 반환하고, 그렇지 않으면 실패를 반환합니다.

11. 사정거리 확인 노드

사정거리 확인 노드는 플레이어가 AI와의 거리에 있으면 성공을 반환하고, 그렇지 않으면 실패를 반환합니다.

12. 추적 노드

추적 노드는 AI가 플레이어를 추적하는 역할을 합니다. 플레이어와의 거리가 주어진 값보다 크면 AI의 상태를 '진행 중'으로 설정하고, 작으면 AI는 플레이어를 추적합니다.

13. 공격 시도 노드

공격 시도 노드는 AI가 플레이어에게 공격을 시도하는 역할을 합니다. 플레이어와의 거리가 주어진 값보다 가까우면 성공을 반환하고, 그렇지 않으면 실패를 반환합니다.

14. 커버 확인 노드

커버 확인 노드는 AI가 숨을 수 있는 커버 위치가 있는지 확인합니다. 이 노드는 커버 객체와 플레이어 객체의 Transfomr을 필드로 가지며, 해당 커버 위치에서 AI를 플레이어로부터 가릴 수 있는지 확인합니다.

15. 커버 이동 노드

커버 이동 노드는 AI가 커버로 이동할 수 있도록 합니다. 최적의 커버 위치를 설정하고, AI 네비게이션 시스템을 이용하여 해당 위치로 이동합니다.

16. 행동 트리 구현하기

이제 모든 노드들을 구성했으므로, 인적 자원을 활용하여 실제 구현을 시작할 수 있습니다.

17. 프로젝트 설정

먼저 Unity에서 적절한 프로젝트 설정을 수행해야 합니다. 게임오브젝트를 추가하고, 플레이어와 적 AI 객체를 생성하고, 커버 객체를 배치합니다.

18. 테스트 및 디버깅

프로젝트를 실행하여 AI가 행동 트리에 따라 움직이는지 확인하고, 필요에 따라 디버깅합니다.

19. 코드 정리

프로젝트에서 사용하지 않는 코드를 정리하고, 전체적인 구조를 개선합니다.

20. 마치며

이제 행동 트리를 구축하는 방법에 대해 알아보았습니다. 행동 트리는 AI를 개발하는데 매우 유용한 도구입니다. 이 프로젝트를 통해 행동 트리를 다루는 방법과 사용자 정의 노드를 만드는 방법을 배웠습니다. 이제 여러분은 행동 트리를 사용하여 다양한 AI 동작을 구현할 수 있을 것입니다. 행동 트리는 복잡한 AI 시스템을 간단하고 효율적으로 구축하는 데 도움이 됩니다. 재미있고 흥미로운 프로젝트를 만들기 위해 행동 트리를 사용해 보세요!

Most people like

Are you spending too much time looking for ai tools?
App rating
4.9
AI Tools
100k+
Trusted Users
5000+
WHY YOU SHOULD CHOOSE TOOLIFY

TOOLIFY is the best ai tool source.