前文:https://blog.csdn.net/jaihk662/article/category/8688031(UGUI)

实现效果在这~:

第一步:制作代表血条的UI

除了LayerNum,其它全部都是图片(Image)

对于所有的“血条”图片,设置如下:

最后效果如下:

两条技巧:

  • 当你做完一套小UI时,建议拖成预制体
  • 对于同一层的UI,例如上面的三张血条图片,排位在前面的图片会被排外在后面的图片遮挡,也就是排位=深度,除此之外,父物体一定会被其子物体遮挡,所以可以通过调整UI在Hierarchy面板中的位置来调整UI的层数

第二步:编写血条主逻辑

直接上代码,代码中有注释(脚本拖到血条父物体"PlayerBlood"上)

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class MainHp : MonoBehaviour
{private Text picNum;private Transform myTran;private Image pic1, pic2, pic3;     //因为样例只有三个血条,所以这里可以直接定义三个字段private List<Image> bloodList = new List<Image>();      //用于管理每一层的血条private int whichPic;       //到了第几个血条private float hitPoint, selfPoint, temp;void Start(){myTran = this.GetComponent<Transform>();pic1 = myTran.Find("Layer1").GetComponent<Image>();pic2 = myTran.Find("Layer2").GetComponent<Image>();pic3 = myTran.Find("Layer3").GetComponent<Image>();picNum = myTran.Find("LayerNum").GetComponent<Text>();bloodList.Add(pic3);bloodList.Add(pic2);bloodList.Add(pic1);whichPic = 0;hitPoint = 1200;            //血量上限temp = selfPoint = hitPoint / 3;        //每一条血量值picNum.text = "x" + (3 - whichPic);}void BeenHit(float now)         //参数now为角色受到的伤害{if (whichPic == 2 && now >= selfPoint)              //如果只剩下一管血,并且当前伤害足以致命{selfPoint = 0;bloodList[whichPic].fillAmount = 0;picNum.text = "Sorry";return;}while (now > temp)          //防止伤害过高,一击打穿多管血量{now -= temp;bloodList[whichPic++].fillAmount = 0;           //简单代码逻辑,稍微会写点程序的都能看懂,这些就不讲了。。。picNum.text = "x" + (3 - whichPic);if (whichPic == 2 && now >= selfPoint){selfPoint = 0;bloodList[whichPic].fillAmount = 0;return;}}if (now < selfPoint){selfPoint -= now;bloodList[whichPic].fillAmount = selfPoint / temp;}else{bloodList[whichPic++].fillAmount = 0;selfPoint = temp - (now - selfPoint);picNum.text = "x" + (3 - whichPic);bloodList[whichPic].fillAmount = selfPoint / temp;}}
}

第三部:血条与角色交互

上面的代码因为已经将“扣血”封装成了方法,所以只需要角色绑定血条,当其受到伤害时调用方法即可

一个例子如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerMechine : MonoBehaviour
{//……void OnTriggerEnter(Collider coll){if (coll.tag == "Monster1Killer" && isDied==false){myAnimator.SetTrigger("Damage");hp -= 20;myBlood.SendMessage("BeenHit", 20);if (hp <= 0)isDied = true;}}
}

搞定!

Unity3D实践3:BOSS血条相关推荐

  1. unity3d做会减少的血条_2019-2020年Unity3D——人物主角的血条-经验的显示.doc

    Unity3D--人物主角的血条 经验的显示 今天说一下人物主角的血量和经验还有人物等级金币的显示.? ? ???//主角刚出现的时候现有血量? ? public static int blood = ...

  2. c语言基于easyx库的 飞机大战游戏(鼠标控制飞机移动,武器升级,boss发射散弹,boss血条等功能)

    课设题目 实现功能: 飞机鼠标控制–飞机武器升级–敌机发射子弹–boss发射散弹–boss血条记录–我方多条生命 图片资源和源码在下面 链接:https://pan.baidu.com/s/1uTQV ...

  3. 我的世界服务器怎么显示玩家血量,我的世界如何用boss血条显示玩家血量 | 手游网游页游攻略大全...

    发布时间:2015-12-29 孤岛惊魂原始杀戮不显示血条怎么办 怪物血量无敌BUG.孤岛惊魂原始杀戮游戏中有玩家遇到了BUG,怪物血条看不见,而且还打不死,该怎么办呢?下面99单机网小编给大家介绍孤 ...

  4. unity3d 任务头上的血条

     人物的名称与血条的绘制方法很简单,但是我们需要解决的问题是如何在3D世界中寻找合适的坐标.因为3D世界中的人物是会移动的,它是在3D世界中移动,并不是在2D平面中移动,但是我们需要将3D的人物坐标换 ...

  5. java怎么写boss血条_Laya:多元血条(BOSS的多管血)

    必备资源: 必备资源.png 调用步骤: 1.定义类 private var _mutipleBossHpBar:BattlerMultipleHpBar = new BattlerMultipleH ...

  6. 死亡细胞Boss血条扣血

    UI布局如下 代码如下,血条的默认高度和宽度感觉没必要改变就没做相应的设置 using System.Collections; using System.Collections.Generic; us ...

  7. python项目:飞机大战(爆炸效果,血条,音效,buff加成,boss,菜单,完整详细注释的源码)

    文章目录 一. 总体概览 基本功能 细节部分(全部可以自定义) 可增添需求 二,技术框架 核心技术概述 1.游戏的初始化和退出 2 理解游戏中的坐标系 3 创建游戏主窗口 4. 理解 **图像** 并 ...

  8. Unity3D NGUI学习(一)血条

    这次来讲讲Unity3D NGUI这个插件的学习,这个插件是收费的,不过去网上可以下载得很多可用版本.用来做用户的交互UI,学习起来比较简单 第一步,导入NGUI包 http://pan.baidu. ...

  9. unity3d做会减少的血条_Unity3d中NGUI加强版血条(Healthbar)的制作

    这阵子项目中需要用到一种特殊样式的血条.描述如下: 1. 正常颜色为红色.受到伤害后,即将扣除的血量变暗(暗红色),并有下降动画效果: 2. 加护盾效果后,增加一部分血量值,该额外部分为白色,护盾效果 ...

最新文章

  1. Linux中的用户及文件权限管理总结
  2. R语言plotly可视化:plotly可视化基本散点图(指定图像类型、模式)、plotly可视化散点图(为不同分组数据配置不同的色彩)、ggplotly使用plotly包呈现ggplot2的可视化结果
  3. GraphSAGE: Inductive Representation Learning on Large Graphs
  4. EPERM: operation not permitted, mkdir 'C:\Program Files\nodejs'
  5. How to resolve syntax error in CL_IM_CMS_SI_GEN_INTF
  6. seo超强外部链接、内部链接技巧
  7. HMC支持管理服务器数量及适合POWER6服务器的HMC型号
  8. 多行查询结果合并sys_connect_by_path
  9. vue表格刷新数据_Vue.js的列表数据的同步更新方法
  10. Win10怎样彻底关闭安全中心
  11. Cookies 和 Session的区别
  12. SpringMVC读取资源文件的几种方式
  13. 数据结构-直接选择排序
  14. 不管你信不信,这就是程序员996的真实内幕!
  15. 订单导出(淘宝天猫)
  16. 建筑模式语言(美)c.亚历山大.pdf,建筑模式语言(上下)(精)
  17. xp设置系统时间同步服务器,xp设置时间同步服务器
  18. 360众测重装上阵,创新服务模式重塑众测新业态
  19. ubuntu U盘只读的修复办法
  20. [后端开发]Http请求413错误解决方法

热门文章

  1. python创意小作品-[专题]在Python教学中应用turtle创意编程实践
  2. python儿童入门视频-Python入门视频课程
  3. 语音识别及其定点DSP实现
  4. 多x多y的origin图_孖记士多 X 阿婆牛杂!广州的两大本土老字号,搞在一起了!...
  5. this.$router.push用query传参对象时需注意的地方
  6. 【二叉树】牛客网:二叉树的镜像
  7. php获取图片所有颜色代码,php 获取一张图片所有点的颜色值
  8. 吸顶灯怎么固定天花板_什么是吸顶灯?吸顶灯的材质和其与吊顶灯的区别分析...
  9. el-input输入值无法在输入框显示
  10. ueditor滚动条