✌️발단아래와 같은 블렌드 트리가 있다`HorizontalMovement`, `ForwardMovement` 파라미터에 따라 블렌딩 된다파라미터에 따라 A,B가 블렌딩돼서 플레이될것이다설계에 따라 다르겠지만 나는 A,B 중 하나가 대부분의 가중치를 가져가면서 플레이시킬 목적이다 문제는 애니메이션 이벤트에서 발생한다A,B 둘 모두 같은 함수를 호출하는 이벤트를 다른 타이밍에 넣어줬다 A의 경우 그리고 B의 경우 그리고 블렌드 트리에서 애니메이션이 실행될 때 기대와 다른 결과가 생긴다기대: 대부분의 가중치를 가져가는 애니메이션의 이벤트만 트리거결과: 두 애니메이션의 이벤트가 모두 트리거 아무래도 가중치에 따라 따라 보여지는 애니메이션이 다를 뿐유니티 내부 구현이 블렌드 트리 내부 모든 애니메이션이 실행되서 ..
부모 오브젝트가 따로있고 자식오브젝트로 모델이있을때 사용 모델 오브젝트에 스크립트를 달고 void OnAnimatorMove() { transform.parent.rotation = anim.rootRotation; transform.parent.position += anim.deltaPosition; } 이렇게 사용함 경우에 따라서는 저렇게 Rotation, Position에 다이렉트로 더해주지말고, 입력에 의한 이동방향에 더해서 움직여주면 자연스럽게 된다. Correct way to handle root motion with parent game object - Unity Answers Unity is the ultimate game development platform. Use Unity to bu..
애니메이터에서 더러운 트랜지션선들을 깔끔하게 만들어주는(특히 이동관련에서) 블렌드 트리 기능 보통 PC인풋기준으로 설명하자면 Input.GetAxis("Horizontal")이렇게 Axis로받으면 0에서 1까지 천천히 lerp처럼 올라가기 때문에 애니메이션도 자연스럽게 0일때 모션부터 1일때 모션까지 이동한다. 하지만 모종의 이유로 애니메이터에서 int형 파라미터를 써야하거나 float임에도 값이 갑자기 뛰어야할때가 있을것이다. 회사프로젝트에서 머신러닝 에이전트의 애니메이터를 구성할때 이런 문제가 있었다. 검색해보니 animator.SetFloat()함수의 오버라이드중에 댐프값과 시간을 파라미터로 받고 보간해주는것을 발견했다. docs.unity3d.com/ScriptReference/Animator.S..