深圳政协委员钟帆飞诈骗30亿

主持正义

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  27 随笔 :: 0 文章 :: 90 评论 :: 56257 阅读

在游戏中,游戏人物的血条可能会因为受伤或吃血瓶而长度变化,所以需要将血条的长度单独提出来作为一个变量,方便直接修改数值。

public float healthBarLength;

改变生命值函数如下:

复制代码
void AddjustCurrentHealth(int adj){
        curHealth += adj;
        if (curHealth < 0) {
            curHealth = 0;
        } else if (curHealth > maxHealth) {
            curHealth = maxHealth;            
        }

        if(maxHealth < 1){
            maxHealth = 1;
        }
        healthBarLength = (Screen.width / 2 * (curHealth / maxHealth));
    }
复制代码

在Update中调用

    void Update () {
        AddjustCurrentHealth (0);
    }

 

运行后查看效果,当修改CurHealth的值为-1的时候,它自动变为0。

但是当修改CurHealth为50的时候,发现血条长度始终为0,后来发现原来curHealth / maxHealth由于都是整数,所以结果是零,应该在maxHealth前面加float。

healthBarLength = (Screen.width / 2 * (curHealth / (float)maxHealth));

这样运行再修改CurHealth值,对应的长度就正确了。
完整PlayerHealth.cs

 

复制代码
public class PlayerHealth : MonoBehaviour {
    public int maxHealth = 100;
    public int curHealth = 100;
    public float healthBarLength;
    // Use this for initialization
    void Start () {
        
    }
    
    // Update is called once per frame
    void Update () {
        AddjustCurrentHealth (0);
    }

    void OnGUI(){
        GUI.Box (new Rect(10,10,healthBarLength,20),curHealth + "/" + maxHealth);
    }

    void AddjustCurrentHealth(int adj){
        curHealth += adj;
        if (curHealth < 0) {
            curHealth = 0;
        } else if (curHealth > maxHealth) {
            curHealth = maxHealth;            
        }

        if(maxHealth < 1){
            maxHealth = 1;
        }

        healthBarLength = (Screen.width / 2 * (curHealth / (float)maxHealth));
    }
}
View Code
复制代码

 

下面创建敌人的血条脚本:

在Unity编辑器的Assets/Scripts文件夹内,选中PlayerHealth,按键盘ctrl+d,复制一份,重命名为EnemyHealth。

双击打开Enemy,修改类名为EnemyHealth,然后将血条位置离top设为40,拖动它到Hierarchy里的cube上。

GUI.Box (new Rect(10,40,healthBarLength,20),curHealth + "/" + maxHealth);


运行如图

 

 

posted on   jayce80  阅读(471)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
点击右上角即可分享
微信分享提示