繁体   English   中英

如何在 Unity 上玩死亡 animation?

[英]How can i play a death animation on Unity?

我想对我的敌人玩死 animation。 基本上,他有一个空闲的 animation,我想在他死时玩死亡 animation,一两秒后,游戏对象被删除。 我是编码新手,所以一个基本的解决方案会更好:)。 这是我的编码:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class EnemyHealthManager : MonoBehaviour {

    public int enemyHealth;
    public GameObject deathEffect;
    public int pointsOnDeath;

    // Use this for initialization
    void Start () {
        
    }
    
    // Update is called once per frame
    void Update () 
    {
        if (enemyHealth <= 0) 
        {
            Instantiate (deathEffect, transform.position, transform.rotation);
            ScoreManager.AddPoints (pointsOnDeath);
            Destroy (gameObject);

        }
    }




    public void giveDamage(int damageToGive)
    {
        enemyHealth -= damageToGive;
    }
}

您可以添加一个名为 PlayAnimationAndDestroy() 的 function 作为 void 并在其中放置 Destroy (this.gameObject, 2f) 然后 animator.Play("deathAnim");

在 Destroy 中,逗号后面的数字是 Unity 等待销毁 object 的时间,因此您需要在时间轴中检查 animation 的持续时间并将该持续时间放入 Destroy ()。

另一种方法是按下 animation 末尾的记录按钮并更改公共变量。 在脚本中,您将放置一个简单的 if(),如果该变量已更改,您将销毁 object。

The third way is to use animation events ( https://docs.unity3d.com/Manual/script-AnimationWindowEvent.html ) but for your usage the first two options are easier:)

欢迎来到统一! 在你的项目中使用AnimatorController和你想要死的GameObject上的相应Animator组件也将成为你的朋友。

您可以 在此处查看Unity 关于动画控制器的精彩教程,但基本上,它是一台 state 机器。 Based on what state your object is in, you can control which game object animations are active and you can set triggers in your game logic to trigger a transition to another state.

这对于触发死亡动画等情况非常有用。

在您的情况下,您需要一个 state 用于idle ,一个 state 用于death 您的deathidle的 state 之间存在联系。

您将设置一个名为die的触发器。 当你的die触发器在游戏逻辑中被触发时,你可以让 state idle只移动到 state death

因此,第 1 步:您将从编辑器中创建一个新的AnimatorController Scriptable Object,然后在Animator window 中对其进行编辑。 使用所需的动画制作所需的 state 机器,并将ScriptableObject保存在项目文件夹中。

第 2 步:在您想要影响的GameObject上添加一个Animator组件。 它有一个AnimatorController组件 - 在此处添加您新创建的 controller。

第 3 步:在您的游戏逻辑脚本中,您将引用该Animator组件:

...
public int enemyHealth;
public GameObject deathEffect;
public int pointsOnDeath;
public Animator animComponent;
...

然后当你达到你的条件时,你会做这样的事情:

if (enemyHealth < 0){
    animComponent.SetTrigger("die");
}

然后您的AnimatorController将从您之前的 state 移动到death ,您设置的 animation 将播放。

祝你好运。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM