【Unity入门计划】用双血条方法控制伤害区域减血速度

目录

1 伤害区域减伤太快 

2 双血条方法

Speed控制减伤速度

最终效果


学习的教程

【unity2021入门教程】69-2D游戏开发教程系列-03-RubyAdventure2DRpg官方教程-17-设置掉血区域_哔哩哔哩_bilibili

1 伤害区域减伤太快 

跟之前的一样,这篇博客依旧是基于B站这个入门教程来写的。起因也很简单,在跟着教程学习设置掉血区域时遇到了如下问题:

如果仅仅使用OnTriggerStay进行减伤,由于这个调用是逐帧的,会造成减伤区域减伤速度太快的问题。

跟着教程的方法修改了玩家对象的Rigidbody2D组件中的Sleeping Mode,也达不到延缓的效果,也没办法控制减血速度。

2 双血条方法

所谓的双血条,其实就是添加真、假两个减血变量。

  • 真血条用来给当前血量减伤
  • 假血条用来控制随着时间的减伤量

基于教程给的原始代码,我新定义了一些参数:

  • damageSpeed——public,用户可以控制减血速度
  • TruedamageHealth——与Speed相乘,成为真血条减血量
  • True&round——用以判断是否调用ChangeHealth()

具体可以看以下给减伤区域挂的触发器脚本

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

public class DamageZone : MonoBehaviour
{
    public int damageHealth = -1;
    public int damageSpeed;
    private double TruedamageHealth = -0.02;
    private double True = 0;
    int round=1;
    private void OnTriggerStay2D(Collider2D other)
    {
        RubyController rubyController=other.GetComponent<RubyController>();

        if(rubyController != null)
        {
            True += damageSpeed*TruedamageHealth;
            if (round==1||True < round * damageHealth)
            {
                round++;
                rubyController.ChangeHealth(damageHealth);
            }

        }
    }
}

其中的ChangeHealth()方法,是在给玩家对象挂的脚本中定义的一个方法:

    //更改生命值
    //amount是游戏中加血/减血的操作
    public void ChangeHealth(int amount)
    {
        //限制当前生命值范围为[0,maxHealth]
        currentHealth = Mathf.Clamp(currentHealth + amount, 0, maxHealth);
        //输出
        if(currentHealth < maxHealth)
        Debug.Log("当前生命值为:" + currentHealth + "/" + maxHealth);
    }

其中,round==1情况单独提出来作为其中一个或条件,是因为考虑到游戏本身的情况。当玩家走入Trigger的瞬间当下是会立马减血的,Stay在减伤范围中再缓慢减血:

进入减伤触发器范围  -> 立马减伤 -> 持续呆在减伤触发器范围 -> 持续掉血 

Speed控制减伤速度

最终效果

玩家进入了伤害区域

伤害情况


 当然,以上只是一个超级简单的一种方法,在之后的学习一定还会涉及到比如:GUI血条体现血量等,到时候会再进行补充。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九九345

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值