Unity Animator Scripting

Changhoony·2023년 1월 31일
0

Unity

목록 보기
4/4

들어가며

  • 수많은 스테이트 머신들을 관리하고, 스테이트 트랜지션을 일일이 수작업으로 장인정신 발휘 할 필요가 없기 때문에 스크립팅 방식을 기록해 둔다.
  • 필요한 부분만 정리했다.

스니펫

  1. 파라미터 추가 및 제거
 foreach (AnimatorController controller in settings.controllers)
 {
 	//추가 (string name, AnimatorControllerParameterType type)
 	controller.AddParameter(name, type);
    //제거 (int index)
    controller.RemoveParameter(index);
 }
  1. 블렌드 트리 추가
AnimatorController controller;

AnimatorState blendTreeInController =
            controller.CreateBlendTreeInController(name, out BlendTree tree);
            
// tree.blendType  :  블렌드 트리 파라미터 유형 1차원 또는 2차원 BlendTreeType의 Enum 데이터
// tree.blendParameter : 1차원 값 또는 2차원 x축 string 데이터
// tree.blendParameterY : 2차원 Y축 string 데이터
// tree.AddChild(info.clip, info.thresholds.x) : 1차원 요소 추가 할 경우 clip과 float 조정 변수를 넣는다.
// tree.AddChild(info.clip, info.thresholds) : 2차원 요소 추가 할 경우 clip과 Vector2 조정 변수를 넣는다.
// blendTreeInController.speedParameterActive : 속도 제어 여부
// blendTreeInController.speedParameter : 속도 제어 변수
  1. 트랜지션 생성
 // 접근 순서 대로 작성
 AnimatorController controller;
 
 // 기본 레이어는 0이다.
 AnimatorStateMachine machine = controller.layers[0].stateMachine; 
 
 // AnimatorState state 접근 방법
 foreach (ChildAnimatorState childAnimatorClip in stateMachine.states)
 {
 	AnimatorState state = childAnimatorClip.state;
 }


 // 1. 기본 트랜지션 연결 방법
 // 스테이트 이름 기준으로 타깃 이름을 향해 선을 긋는다.
 // (state -> destination)
 AnimatorStateTransition stateTransition = state.AddTransition(destinationName);
 // 상세 설정
 // stateTransition.hasExitTime
 // stateTransition.duration
 // stateTransition.exitTime
 
 // 트랜지션 조건 설정
 // mode : if -> 트리거 또는 불 값 참인 경우,
 // mode : if not -> 불 값 거짓인 경우, 
 // stateTransition.AddCondition(mode, threshold, name)
 
 // 2. AnyState 나 ExitState 연결 방법
 //AnyState ( any -> destination )
 stateMachine.AddAnyStateTransition(state);
 //Exit ( state -> exit )
 state.AddExitTransition();

관련 코드 자료

profile
Unity 개발

0개의 댓글