GameForFun

블로그 이미지
by PforPepsi

TAG CLOUD

  • Total hit
  • Today hit
  • Yesterday hit

애니메이션은 현재 자신이 가지고 있는 AnimationClip의 상태를 확인하며 플레이가 된다.

애니메이션이라는 놈에 존재하는 clip들은 모두 각자의 State를 가지고 있는데 
UNITY에서는 이것들을 AnimationState라는 Class로 관리를 한다.

animation["name"]와 같이 인덱스에 string을 넣어줌으로써 AnimationState를 가져올 수 있다.

여튼, 애니메이션의 상태에는 다음과 같은 것들이 존재한다.

bool enabled; 이는 플레이 상태인지 아닌지 확인하는 것으로 사용되며, animation.IsPlaying()의 리턴값을 결정짓는 놈이다.

int layer; 이는 애니메이션의 우선순위를 결정한다. 

즉, 모든 enabled된 애니메이션을 플레이하되, layer 값이 높은 놈의 애니메이션을 우선시 하겠다는 뜻이다.


이를 토대로 유니티 측에서 제공하는 constructionworker를 가지고 놀아보자.

	
AnimationState mix;
void Start () {

		animation["run"].wrapMode = WrapMode.Loop;

		mix = animation["idle"];

		

		mix.weight = 1f;

		mix.wrapMode = WrapMode.Loop;

		mix.layer = 1;

		mix.blendMode = AnimationBlendMode.Blend;

		mix.AddMixingTransform(RShoulder);

		mix.enabled = true;

		

		animation.Play("run");

	}

이는 run이라는 애니메이션의 오른쪽 어꺠부분을 idle이라는 애니메이션으로 대체하는 코드이다.

기본 layer는 0이기 때문에 idle의 애니메이션이 run이라는 애니메이션 위에 보여지기 위해서는 0보다 높은 값으로 설정해줘야된다.

또한 AddMixingTransform(Transform)을 통해 idle이라는 애니메이션은 RShoulder의 transform 부분만 플레이한다는 코드를 입력 할 수 있다. (-> 즉, idle 애니메이션 중 RShoulder만 플레이되고 나머지 뼈들은 플레이가 안된다.)

추후에 idle이라는 모션만 플레이하고 싶다면 RemoveMixingTransform을 통해서 해제해줘야 한다.



'[Unity3D]' 카테고리의 다른 글

Kinect 관련 블로그  (0) 2012.11.15
SpotLight 버그  (0) 2012.11.06
동적 애니메이션 만들기.  (2) 2012.10.29
UI 제작.  (0) 2012.10.11
[UNITY3D] 면 뒤집힘 현상.  (1) 2012.08.22
AND

ARTICLE CATEGORY

목록들 (118)
[Unity3D] (39)
그래픽관련 (13)
잉여잉여 (25)
프로그래밍 (27)
노래♬ (3)
Game_Design(기획) (3)

RECENT ARTICLE

RECENT COMMENT

RECENT TRACKBACK

CALENDAR

«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

ARCHIVE