2014-04-09 4 views
1

유니티 4.3.4 엔진을 사용하여 2D 플랫폼 게임을 만들고 있습니다. 나는 "유휴"와 "죽음"(나는 "애니메이터"를 사용했다)과 스크립트로이 애니메이션을 제어하는 ​​간단한 애니메이션을 만들었습니다.유니티 : 애니메이터로 프리 패브를 구체화하기

여기에 문제가 있습니다.이 프리 프레임의 클론을 인스턴스화하면 항상 "유휴"애니메이션이 표시되고 필요할 때 "죽음"이 켜지지 않습니다.

pos = new Vector3 (-5, 4, 0) * TileSize; 
newObject = Instantiate (Bonus, pos, Quaternion.identity) as GameObject; 

하지만 흥미로운 점은 무엇입니까? 애니메이션 작업을 멋지게 만드는 방법을 발견했습니다. 그냥 인스턴스화 한 후 하나의 문자열과 같은 추가 :

newObject.animation["boxNew"].speed=1; 

또는이 (또는 "animaton"작동하도록 노력하고 있음을 임의의 문자열) : 물론

newObject.animation.enabled=true; 

내가이 문자열에서 예외가를 : 를 " MissingComponentException : "BonusBlock (복제)"게임 개체 ""에 '애니메이션'이 없습니다. 이것은 사실입니다. 저는 Animation 구성 요소가 없습니다. Animator가 있습니다. 그런데 왜 모든 것이 이렇게 작동하고 있습니까? 아무도 이것을 설명 할 수 있습니까?

답변

0

애니메이터는 새로운 mecanim/state 플로우 애니메이터로 완전히 폭발 한 경우에만 사용됩니다. 간단한 예를 위해 생기고 싶은 것은 프리 팹에 애니메이션 (애니메이터가 아닌) 컴포넌트를 추가하는 것입니다. 상기 애니메이션 구성 요소에 대한 인스펙터의 애니메이션리스트에 2 개의 애니메이션을 할당하십시오. 그 다음에는 newObject.animation.Play ("death")를 사용할 수 있습니다. 죽음의 애니메이션을 재생할 때 트리거합니다. 또는 newObject.animation.CrossFade ("death")와 같은 것을 사용하십시오. 블렌드 애니메이션.

는 여기 ->은

관련 문제