
변수를 활용한 그래프
Tutorial
foundational
+5XP
20 mins
Unity Technologies
유니티 비주얼 스크립팅에서 제공하는 Variable 컴포넌트를 활용하여 데이터를 저장하고 사용하는 방법에 대해 알아보는 단계입니다.
1. 변수 추가하기
플레이어가 사용자의 방향키 입력을 받아 이동하는 로직을 구현하겠습니다. 그 전에 이동에 필요한 데이터를 변수에 저장하기 위해 Variables 컴포넌트에 Speed (float)와 Movement (Vector3)를 추가해봅니다. Speed는 이동 속도이므로 적절한 수치를 미리 설정해두면 좋습니다.
Variables 컴포넌트에서 여러 타입의 변수를 만들 수 있습니다.
2. 그래프에서 변수 가져오기
매 프레임마다 입력 값을 받아서 Movement에 저장하겠습니다. 그래서 매 프레임마다 실행되는 이벤트 노드 OnUpdate와 Variables > Object > Get Movement 노드를 추가합니다.
비주얼 스크립팅 변수와 관련된 노드를 추가하기 위한 경로
이벤트인 Fuzzy Finder에서 Get Axis검색하여 노드를 추가하고 기존에 있었던 OnUpdate 노드와 연결합니다. 하지만 방향키는 수평(Horizontal), 수직(Vertical)으로 나누어져 있으므로 Get Axis 노드는 두 개가 필요합니다.
Axis Name은 대소문자 정확하게 작성해야 합니다.
위 그림을 통해 알 수 있듯이 흐름에 연결되어 실행 예정인 노드는 잘 보이지만 연결되지 않은 노드는 희미하게 나타납니다. Get Variable 노드가 지금 그런 상황입니다.
3. 변수 활용하기
Get Axis에서 나오는 입력값 float를 Movement에 반영하겠습니다. Vector3의 값을 변경하는 Vector3:Set(new X, new Y, new Z) 노드를 추가하고 Horizontal은 X축으로, Vertical은 Z축으로 연결합니다.
마지막으로 변경 대상인 Movement를 Vector3와 연결합니다. 이후 플레이 버튼을 누르고 WASD 혹은 방향키를 눌러 Movement 변화를 살펴봅시다.
실시간 전달되는 데이터 값을 미리 보여주는
4. 데이터를 넘기는 Chainable 옵션
점프와 마찬가지로 이동 입력 값을 애니메이터에게 전달해주어 애니메이션이 작동되도록 합시다. 방향과 크기를 가진 벡터를 순수한 크기값으로 보려면 Magnitude를 사용하면 됩니다. vec3 mag로 검색하여 Vector3:Magnitude(Vector) 노드를 추가합니다.
그런데 계산이 완료된 Movement를 연결해주어야 하는데 Set 노드에 출력이 없는 것을 볼 수 있습니다.
Chainable을 활용하면 다음 노드에게 계산된 데이터를 쉽게 넘겨줄 수 있습니다.
이런 경우를 대비해서 입력받은 데이터를 내보내는 Chainable 옵션을 가지고 있습니다. Graph Inspector에서 해당 옵션을 체크하면 입력과 동일한 타입으로 출력이 나타납니다.
입력 값으로 변경된 Vector3을 크기 값으로 환산하여 애니메이터에게 전달하는 모습
이후 Animator:SetFloat(name, value) 노드를 추가 및 연결하여 방향 입력에 반응하는 걷는 애니메이션이 잘 나타나는지 확인해봅니다.