Unity 2D - 如何播放死亡动画预制件

时间:2015-07-02 08:50:23

标签: c# unity3d unity3d-2dtools

我已经从精灵表创建了一个带有动画的预制件,我想在玩家死亡时播放它。我通过在场景中拖动它来检查预制件是否正常工作,并且它正在循环播放精灵表的每一帧。

现在我想在玩家死亡时玩这个预制件,并在它结束后销毁它,但到目前为止我只能将它放在玩家死亡的地方,它永远留在那里。发生这种情况时也会出现一些错误。

这是死亡剧本:

 public class DmgByCollisionEnemy : MonoBehaviour {

    public GameObject deathAnimation;

    void Die() {
        deathAnimation = (GameObject) Instantiate(deathAnimation, transform.position, transform.rotation);
        //Destroy(deathAnimation);
        Destroy(gameObject);
    }
}

我通过在Unity界面中拖动预制件来设置deathAnimation。

Die()方法触发时我得到的错误

UnassignedReferenceException: The variable deathAnimation of DmgByCollisionEnemy has not been assigned.
You probably need to assign the deathAnimation variable of the DmgByCollisionEnemy script in the inspector.

那我怎么能这样做呢?

1 个答案:

答案 0 :(得分:3)

您可以尝试将简单的销毁脚本添加到您的死亡动画对象中,该对象会在一段时间内销毁对象或在动画中触发它(getIndexOfFormattingRun())。当您实例化对象时,它将出现在所需的位置,并且无论" main"是否会被破坏。对象

像这样销毁脚本:

void DestroyMyObject() 
{ 
   Destroy(gameObject); 
}

脚本在一段时间后运行:

void Start() 
{
    Invoke ("DestroyMyObject", 1f);
}

void DestroyMyObject()
{
    Destroy(gameObject);
}

Spawn脚本:

using UnityEngine;
using System.Collections;

   public class SpawnExtra : MonoBehaviour {

   public GameObject deathAnimation;

   public static SpawnExtra instance;

   void Start () 
   {
        instance = this;
   }

   public void SpawnDeathAnimation(Vector3 position)
   {
        Instantiate (deathAnimation, position, Quaternion.identity);
   }
}

当你想要产生这样的附加对象时,你可以使用它:

SpawnExtra.instance.SpawnDeathAnimation (transform.position);

现在你必须添加gameobject,例如ExtrasController,在其上添加脚本,你可以产生你想要的任何东西。请记住在检查器中拖放动画预制件。