게임심화 - 14. UI-Animation-Legacy Animation

LSDrug·2024년 7월 17일

Legacy AnimationSystem

AnimationClip

애니메이션 에셋 이름을 유니티에서 애니메이션 클립이라고 부른다.

keyframe을 베이스로 해서 각 애니메이션이 저장되어있다. 다음의 요소를 가지고 있다.

  • 애니메이션의 길이
  • 애니메이션 keyframe. 원래 유니티가 30fps, 언리얼엔진이 60fps를 지원했으나. 현재 유니티는 둘 다 지원한다.
  • wrapMode : 동작을 재생하는 모드

WrapMode

다음의 요소를 가지고 있다.

  • once : 한번만 재생이 되는 것
  • Loop : 애니메이션이 반복되는 것
  • PingPong : 애니메이션 시간이 왔다 갔다 하도록 만드는 것
  • Default : 기본 디폴트 애니메이션
  • ClampForever : 마지막 장면이 되면 그 마지막 장면에서 멈춰 있도록 하는 것

AnimationState

애니메이션 클립에 관한 컨트롤을 위한 클래스. 주요한 기능은 다음과 같다.

NormalizedTime
Speed
length
layer

Animation Blending

void Update() 
{
	if(Input.GetAxis("Vertical" > 0.2f)
    {
    	animation.CrossFade("walk");
    } else
    {
    	animation.CrossFade("idle");
    }
}

해당 코드는 이동 키를 누르면 자동으로 걷는 동작을 매 프레임마다 실행하는 것이고 누르지 않으면 자동으로 idle(기본) 동작을 하는 것을 의미한다.

Animation Layers

해당 애니메이션의 컴포넌트를 조정한다.

void Start() {
	animation.wrapMode = WrapMode.Loop; // 기본적으로 반복
    animation["shoot"].wrapMode = WrapMode.Once; // 기본클립(shoot)은 기본이 Once
    animation["shoot"].layer = 1; // 기본 레이어는 1
    animation.Stop(); // 
}

Animation Mixing

해당 애니메이션을 섞을 수 있다.

void Start() {
	Transform mixTransform;
    mixTransform = transform.Find("root/upper_body/left_shoulder");
    animation["wave_hand"].AddMixingTransform(mixTransform);
}

wave_hand 애니메이션을 mixTrasform 애니메이션과 섞겠다는 뜻을 가지고 있다.

단, 해당 믹싱은 단순한 애니메이션만 가능하다. 복잡한 애니메이션은 섞으면 조잡해지기 때문이다.

Additive animation example

애니메이션 예제는 다음과 같이 사용할 수 있다.


profile
마약같은 코딩, 마약같은 코딩러

0개의 댓글