Unity 协程demo -实现中毒效果

这篇博客介绍了如何在Unity游戏中利用C#协程实现中毒效果,当角色触发中毒状态时,立即扣除20点血量,并在接下来3秒内每秒减少5点血量。同时,文章还涵盖了HP Manager脚本的实现,包括血条UI的更新和按键操作。通过StartCoroutine和WaitForSeconds函数,开发者可以创建出平滑的血量变化动画。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考:

Unity脚本的生命周期
C# 协程 在 Unity中的应用
[中文字幕]角色UI血条以及被击中后的“掉血”缓冲效果(包括:敌人简单AI-巡逻或射击)

用协程完成中毒需求

按下空格, 进入中毒, 立马扣除20血量, 每秒5滴血, 持续3秒
(务必看完参考)

代码

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


public class HpManger : MonoBehaviour
{
    public Image hpImage;
    public Image nhpImage;

    public float hp;
    [SerializeField]
    public float maxHp;

    [SerializeField]
    public float speed = 0.005f;
    // Start is called before the first frame update
    void Start()
    {
        hp = maxHp;
    }

    // Update is called once per frame
    void Update()
    {
        hpImage.fillAmount = hp / maxHp;
        if (nhpImage.fillAmount > hpImage.fillAmount)
        {
            nhpImage.fillAmount -= speed;      
        }
        else
        {
            nhpImage.fillAmount = hpImage.fillAmount;
        }

        if(Input.GetKeyDown(KeyCode.Q))
        {
            hp += 30;
            if(hp >= maxHp)
            {
                hp = maxHp;
            }
        }

        if(Input.GetKeyDown(KeyCode.Space))
        {
            hp -= 20;
            StartCoroutine(PosionHp());
        }
    }
    // 中毒 每秒5滴血 持续3秒
    IEnumerator PosionHp()
    {
        Debug.Log("PosionHp 协程 start");
        for(int i = 0; i < 3; i++)
        {
            yield return StartCoroutine(ReduceHp(5, 1));
        }
        Debug.Log("PosionHp 协程 end");

    }

    IEnumerator ReduceHp(int value, int second)
    {
        Debug.Log("ReduceHp 协程 start");
        yield return new WaitForSeconds(second);
        hp -= value;
    }

}

效果:

在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值