트랜지션을 이용한 상태 전환
트랜지션(Transitions)은 비주얼 스크립팅이 활성 상태를 다른 상태로 전환하는 조건을 갖고 있는 상태간 연결점을 말한다.
트랜지션 편집하기
Script State와 마찬가지로 트랜지션은 Script Graph로 이루어져 있다.
Transition Node |
위의 예에서는 새로운 상태로 전환할 수 없는 문제점을 가지고 있다. Event가 언제 발동해야 하는지를 지정하지 않았기 때문에 결고 상태가 전환할 수 없는 것이다. 따라서 목적 상태와 트랜지션 둘 다 흐리게 표시되고 있다. 트랜지션 유닛을 더블 클릭하거나 Edit Graph 버튼을 클릭하면 트랜지션 그래프가 나타난다. 기본적으로 다음과 같이 구성된다.
Transition Event |
트리거 상태 전환 유닛(Trigger State Transition Unit)은 부모의 상태가 이 트랜지션 조건에 따라 상태가 변경되어야 한다는 것을 지시하는 특별한 유닛이다. 이벤트(events)나 조건(if)과 같은 유닛을 상태 전환 그래프에서 사용하면 된다.
예를 들어, "Player" tag가 붙은 게임 오브젝트가 적(Enemy)에게 감지(trigger)된다면 그 적은 추척 상태(chase state)로 전환된다고 할 때, 그 그래프는 다음과 같이 그려 질 수 있다.
Transition Event 예시 |
끝으로 상위 상태 그래프에서 트랜지션의 라벨을 변경하고자 한다면, 해당 트랜지션을 선택하고 그래프 인스펙터에서 타이틀을 작성하면 된다.
상위 상태로 돌아가면 트랜지션은 다음과 같이 나타난다.(역자주-트랜지션 내부에 조건 스크립트를 작성하고 나오면 아이콘이 변경 된다.)
Transition Node |
트랜지션에 직접 제목을 작성하지 않을 경우, 이벤트의 이름과 설명이 자동으로 지정된다.
트랜지션 라벨은 항상 보이는 것이 디폴트이다. 이것이 그래프에서 너무 많이 차지하여 변경하고 싶다면, Unity > Preferences > Visual Scripting > State Graphs > Transition Display에서 디스플레이 트리거를 변경한다.
Transition Display |
셀프 트랜지션
자기 자신의 상태로 되돌아 오는 트랜지션은 매우 유용한 경우가 있다. State 노드 위에 마우스 오른쪽 버튼을 클릭하고 Make Self Transition을 선택한다.
예를 들어, 적 캐릭터가 3초 마다 랜덤하게 방향을 바꾸게 함으로써 순찰(patrol) 기능을 구현할 수 있다.
순찰 상태의 스크립트 그래프는 다음과 같다.(역자주 - 이동할 타겟의 x, z 좌표가 -30 ~ 30 사이에서 각각 랜덤하게 정해진다.)
Nav Mesh Agent |
셀프 트렌지션은 다음과 같다.(역자주 - 3마다 상태가 전환된다.)
Transition Event |
상위 상태 그래프에서 보면 다음과 같이 나타난다.(역자주 - 3초마다 랜덤 x, y 좌료로 이동하게 된다)
Self Transition |
다중 트랜지션 추가하기
상태 전환을 위해 추가할 수 있는 트랜지션의 수에는 제한이 없다. 그러나 트랜지션 사이에 우선순위 개념이 없기 때문에 적절한 트랜지션을 사용해야 한다.
Multiple Transitions |
<원문>
https://docs.unity3d.com/Packages/com.unity.visualscripting@1.7/manual/vs-transitions.html
댓글
댓글 쓰기