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界面中拖动预制件来设置了死亡动画。
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手册:使用动画事件)。当您实例化对象时,它将出现在所需位置,并且无论“主”对象如何,它都将被销毁。

销毁脚本如下:

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);

现在你需要添加游戏物体,例如ExtrasController,在其上添加脚本,然后就可以生成任何你想要的东西。记得在检视面板中拖放动画预制件。

但我该如何编写类似定时器的代码呢?使用for循环无法解决这个问题。 - Borislav
有两种有用的方法。协程和Invoke。我建议你使用Invoke。像这样:Invoke("DestroyMyObject", 1f); - 这段代码将在1秒后运行你的函数DestroyMyObject。为了更好地展示示例,进行了一些编辑。 - Paweł Marecki
这个功能非常棒,但我仍然遇到了这个错误(或警告?它带有一个红色的(!)符号) - “DmgByCollisionEnemy”的“deathAnimation”变量尚未被分配。这是公共对象,我通过在Unity UI中拖动动画预制来定义它。 - Borislav
不,它没有处于播放模式,我认为问题是因为预制件是通过Instantiate方法克隆的,但我不知道如何确切地解决它。 - Borislav
谢谢,一切都很顺利,但是错误是因为我在子弹上也有这个Damage脚本,而它们没有拖放预制件,现在已经修复了。 - Borislav
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接