Unity:使用animator实例化预制件

时间:2014-04-09 15:57:54

标签: c# animation unity3d 2d instantiation

我正在使用Unity 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(克隆)“游戏对象”没有附加'动画'。这是真的,我真的没有动画组件,我有Animator。但为什么一切都这样工作?谁能解释一下呢?

2 个答案:

答案 0 :(得分:0)

动画师实际上只有在你使用新的mecanim /状态流动画师进行全面爆破时才会使用,你想要为一个简单的例子想要做的就是在你的预制件上添加一个动画(不是动画师)组件,然后分配您的2个动画到检查器中的动画列表中的所述动画组件。然后在对象上你可以使用newObject.animation.Play(" death");当你希望它触发时播放死亡动画。或使用类似newObject.animation.CrossFade(" death");用于混合动画。

在此处找到 - > http://docs.unity3d.com/Documentation/ScriptReference/Animation.html

答案 1 :(得分:0)

Unity Technologies给出了答案:在停用之前,使用默认状态重置gameObject。 Discussion on Unity3d Forum

如果您可以阅读中文,click here