【Unity2D】实现人物死亡动画+代码

学习目标:

实现人物死亡动画+代码

参考视频:秦无邪OvO的个人空间_哔哩哔哩_Bilibili秦无邪OvO,独立游戏开发者/美术/编曲;秦无邪OvO的主页、动态、视频、专栏、频道、收藏、订阅等。哔哩哔哩Bilibili,你感兴趣的视频都在B站。https://space.bilibili.com/335835274?from=search&seid=4530647365121956206&spm_id_from=333.337.0.0CSDNicon-default.png?t=M0H8https://mp.csdn.net/mp_blog/creation/editor/122708406


学习内容:

最主要的还是要先把动画做好,第一次做动画没什么经验,画布比较小是64*32,建议做人物画布建立大一点,做好后测试一下能不能运行

代码部分:

在PlayerHealth的C#脚本中,当health <= 0的时候,调用动画的名字叫die的trigger,播放动画后延迟调用销毁对象。

PlayerHealth:

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

public class PlayerHealth : MonoBehaviour
{
    public int health;
    public float blinkTime;
    public int blinks;
    public float dieTime;

    private Renderer myRender;
    private Animator myAnim;
    void Start()
    {
        myRender = GetComponent<Renderer>();
        myAnim = GetComponent<Animator>();
    }

    // Update is called once per frame
    void Update()
    {
        
    }

    public void DamagePlayer(int damage)
    {
        health -= damage;
        if(health <= 0)
        {
            myAnim.SetTrigger("Die");
            Invoke("KillPlayer", dieTime);
        }
        BlinkPlayer(blinks,blinkTime);
    }

    void KillPlayer()
    {
        Destroy(gameObject);
    }
    void BlinkPlayer(int numBlinks,float seconds)
    {
        StartCoroutine(DoBlinks(numBlinks, seconds));
    }
    IEnumerator DoBlinks(int numBlinks, float seconds)
    {
        for (int i = 0; i < numBlinks * 2; i++)
        {
            myRender.enabled = !myRender.enabled;
            yield return new WaitForSeconds(seconds);
        }
        myRender.enabled = true;
    }
}
 


学习产出:

 播放成坤

猜你喜欢

转载自blog.csdn.net/dangoxiba/article/details/122721946#comments_20931302
今日推荐