Unity Engine

Behavior Tree - Node Canvas (2)

Aostols 2022. 7. 2. 20:43
반응형

Node Canvas를 통해 기본적인 동작을 테스트 해보겠습니다.

3D Object2개를 만들고 하나를 다른 쪽으로 움직이도록 해보겠습니다.

 

 

화면에 Cube 와 Cylinder를 만들어 줍니다.

그리고 Cube에 스크립트 하나를 붙여줍니다.

 

public class CubeController : MonoBehaviour
{
    public GameObject Target;
}

 

아주 단순하게 GameObject를 변수로 하나 설정해 두는 것입니다.

 

 

이것을 Cube에 할당 해 주고 Target에 Cylinder를 할당 해 줍니다.

이제 준비가 끝났고 Node Canvas로 Behavior Tree를 제작해 줍니다.

 

Behaviour Tree Owner를 추가해 줍니다.

약간 다른 스펠링에 주의 하세요.

 

이제 2가지 스크립트가 붙었습니다.

Behaviour Tree Owner는 Behaviour Tree(이하 BT)를 관리하는 스크립트 입니다.

Blackboard는  BT에서 사용할 변수를 쥐고 있는 객체 입니다.

 

BT를 생성하는 방법에는 2가지 방법이 있습니다.

Create New 를 눌러보면 Bound 와 Asset이 있는데 

Bound : 객체에 BT를 묶어 버립니다.

Asset : 객체를 파일화 하여 다른데도 쓰일 수 있도록 합니다.

 

편하신 것을 선택해도 되는데 저는 Asset으로 선택 하겠습니다.

 

MoveBasic이라는 이름을 정해줬고 Asset 을 선택해서 Asset Reference라고 적혀 있습니다.

Blackboard에는 따로 할당 한 것이 없기 때문에 비어 있습니다.

 

일단 Blackboard에 변수 하나를 추가 해 줍니다.

전체적으로 쓰일것이 아니기 때문에 위에 Cube Blackboard를 선택 해 줍니다.

 

GameObject를 추가하게 되면 위와 같이 뜨게 됩니다.

이제 여기다 CubeController에 선택한 Target을 바인드 할 예정입니다.

우측 톱니버튼을 클릭 해 줍니다.

 

Bind -> CubeController -> Target

Value부분이 변경 되었고 Name은 제가 Target으로 변경 하였습니다.

이제 본격적으로 노드를 추가합니다.

 

Sequencer를 추가하고 하위로 Action을 추가 했습니다.

 

Assign Action Task를 선택하고 move를 검색하면 2가지가 나오게 되는데 Move Towards를 선택 해 줍니다.

 

Action Task가 변경 되었습니다.

이제 Target을 Blackboard의 Target으로 선택해야 합니다.

우측 동그라미를 눌러 줍니다.

 

[NONE]이라는 드롭다운으로 변겨오디고 이를 눌러보면 위와 같이 Blackboard를 선택하고 거기에 있는 변수를 선택 할 수 있습니다.

Target을 선택 해 줍니다.

 

Wait Action Finish는 행동이 끝날떄 까지 기다리는 것입니다.

Speed의 속도로 Stop Distance거리 접근하는 동안 태스크를 종료시키지 않고 기다리는 것 입니다.

 

이제 실행 시켜 봅니다.

 

 

Cube가 Cylinder로 이동하는 것을 볼 수 있습니다.

반응형

'Unity Engine' 카테고리의 다른 글

Behavior Tree - AI 이동 디테일  (0) 2022.07.10
Behavior Tree - Custom Action  (0) 2022.07.07
Behavior Tree - Node Canvas (1)  (0) 2022.06.29
Unity - RaycastCommand, IJobParallelFor  (0) 2022.06.21
Custom Inspector - ReorderableList(2)  (0) 2022.06.20