首页 文章

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

提问于
浏览
3

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

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

这是死亡剧本:

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 回答

  • 3

    您可以尝试将简单的销毁脚本添加到您的死亡动画对象中,该对象会在一段时间内销毁对象或在动画中触发它(Unity Manual: Using Animation Events) . 实例化对象时,它将出现在所需的位置,无论"main"对象如何,它都将被销毁 .

    像这样销毁脚本:

    void DestroyMyObject() 
    { 
       Destroy(gameObject); 
    }
    

    脚本运行时间:

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

    产卵脚本:

    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,在其上添加脚本,你可以产生你想要的任何东西 . 请记住在检查器中拖放动画预制件 .

相关问题