学习Unity已经10天了,也没发现有什么长进,真的急。昨天仿着官方Demo做了个射击游戏轮廓,其中需要给每个怪做一个血条。

搜了一些,挺复杂的,用NGUI或者UGUI,外加很长的代码。。。不过还是找到了一篇简单的。

但是那一篇把所有的东西都放一起了,不太好,我在这整理分离一下。

背景:

官方Demo恶魔射手。其中每个怪都有一个EnemyHealth脚本,该脚本主要有怪物的血量等,然后有个TakeDamage()函数来计算伤害后的血量。

开始:

1、制作图片:

PS一张细长的红色图片作为血量;

2、制作一个材质球,起名为“XuetiaoMaterial”,单击这个材质球,在Inspector面板中把红色图片加进来,就成了红色的材质球了。

 Inspector面板的Shader下选择Unlit/Transparent

3、创建一个Cube,放到你需要加血条的怪上,Cube作为怪的子物体。拖动成纸片子的形状,然后拖动到合适的位置即可。

4、单击这个Cube,你愿意改名就改名。把2中的材质球加到这个Cube中来,它就变成红色的了。把Cube的Collider、俩Shdow勾选掉。毕竟血条不用阴影也不用碰撞嘛。

5、在你的控制血量的脚本里加点东西,我是在EnemyHealth.cs中加的,如下:

  血条贴图是一个新货,代码计算后会重新赋给Cube

 public Texture2D bloodBarRed;  // 血条贴图
public Transform bloodBar; // 代表血条的CUBE

另外还有:

    void Start()
{
bloodBar = transform.FindChild("BloodBarCube"); //获得血条物体 bloodBarRed = new Texture2D(, ); // 新建一个贴图,用以变化后赋给Cube
bloodBarRed.wrapMode = TextureWrapMode.Clamp; // 拉伸该图
}

还有,要使血条时刻正对摄像机的:

 void Update ()
{
bloodBar.LookAt(Camera.main.transform.position); // 朝向摄像机
}

下面是加入的一个更新血条的函数:

    public void UpDateBloodBar()
{
float cunrrentRed = currentHealth * bloodBarRed.width / startingHealth; //直接除,会因为两个整型得到0,所以先乘以后除
for (var x = ; x < bloodBarRed.width; x++)
{ // 对每个坐标点
for (var y = ; y < bloodBarRed.height; y++)
{//循环执行y轴从0开始,y轴小于血条的宽的话执行下面,否则+
if (x < cunrrentRed)
bloodBarRed.SetPixel(x, y, Color.red); //x小于血条长度的范围涂成红色,
else
bloodBarRed.SetPixel(x, y, Color.gray); //其他部位涂成黑色
}
}
bloodBarRed.Apply(); // 应用该图
bloodBar.gameObject.renderer.material.mainTexture = bloodBarRed; // 将修改后的贴图给血条Cube }

其中 currentHealth是我EnemyHealth类中的成员变量,startingHealth也是,代表了总血量。

然后你可以在血量改变的函数中调用此函数。从而更新血条。如果有必要,你也可以将当前血量作为形参传入。

6、将脚本拖入对应的对象(需要血条的怪)中,单击该怪,在Inspector面板中,找到该脚本,把红色图片拖入bloodBarRed中,把血条Cube(该怪的子物体)拖入bloodBar即可。

运行就OK了。

致谢:

http://www.manew.com/forum.php?mod=viewthread&tid=33694&page=1

unity制作简单血条的更多相关文章

  1. Unity NGUI弧形血条的制作

    unity版本:4.6 NGUI版本:3.6. (转载请注明参考链接及作者) 参考链接:http://www.cnblogs.com/louissong/p/3841656.html,作者:博客园 L ...

  2. unity如何显示血条(不使用NGUI)

    用unity本身自带的功能,如何显示血条? 显示血条,从资源最小化的角度,只要把一个像素的色点放大成一个矩形就足够,三个不同颜色的矩形,分别显示前景色,背景色,填充色,这样会消耗最少的显存资源. un ...

  3. 【FairyGUI & Unity】实现血条UI扣血与加血的缓动效果

    组件设计 创建一个进度条组件,作为血条. bar是实际血量条 DownBar是扣血缓动背景图层 UpBar是加血缓动背景图层 LowBar是低血量变色(和控制器配合,本文不讲) n11组合是血量参考线 ...

  4. Unity NGUI 血条制作

    NGUI 血条制作步骤 实现过程: 模拟血条的变化当点击按钮Button是血条会实时发生变化. 1.向Unity中导入NGUI2.6.3.unitypackage 点击create your ui 后 ...

  5. 制作Unity中的单位血条

    本文章用于记录Unity的学习过程,如有疑问,欢迎交流. 1.血条的显示 在Unity场景中创建空物体,然后新建两个Image(图片),当然只用一个也行,一个作为填充来显示血量,一个作为血条的外框. ...

  6. Unity中制作血条2.0

    ##1.血量显示 不必像之前那样添加Slider组件 直接创建Image 在添加Source Image之后,将Image Type 修改为Filled 通过修改Fill Mode就可以显示不同效果 ...

  7. Unity UGUI HUD 怪物血条实现

    首先做一个血条,创建一个名为Follow3DObject的脚本添加到血条控件上. Follow3DObject.cs的代码如下: using UnityEngine; using System.Col ...

  8. Unity UGUI实现分段式血条

    我们可以看到像英雄联盟等游戏里英雄头顶的血条显示并非是纯色的,而是根据血量的多少而显示一定量的格子,这种方式明显是比较友好.比较美观的,事实上我们的游戏里面也想实现这样的效果,那该怎么办呢?根据血量的 ...

  9. 关于Unity中NGUI的3D角色血条的实现

    首先要到Unity的Assets Store里面去下载一个扩展的Package叫NGUI HUD Text v1.13(81),注意如果没有安装NGUI就必须先安装NGUI插件,否则会用不了,因为HU ...

随机推荐

  1. linux tomcat 启动报错 Cannot find /etc/bin/setclasspath.sh

    这是由于tomcat/bin/catalina.sh文件中有一个设置变量的方法 $CATALINA_HOME 有的tomcat中需要默认此值 $CATALINA_HOME=tomcat地址

  2. Redis集群操作手册

    一.原始集群(6节点 3主3从): (1)启动集群: [root@bhz004 ~]# /usr/local/redis/bin/redis-server /usr/local/redis-clust ...

  3. BZOJ4320 ShangHai2006 Homework(分块+并查集)

    考虑根号分块.对于<√3e5的模数,每加入一个数就暴力更新最小值:对于>√3e5的模数,由于最多被分成√3e5块,查询时对每一块找最小值,这用一些正常的DS显然可以做到log,但不太跑得过 ...

  4. C#范型实例化对象

    T s = System.Activator.CreateInstance<T>();

  5. JQuery队列queue与原生模仿其实现

    jQuery中的queue和dequeue是一组很有用的方法,他们对于一系列需要按次序运行的函数特别有用.特别animate动画,ajax,以及timeout等需要一定时间的函数. queue() 方 ...

  6. HAOI2006 均分数据 [模拟退火]

    题目描述 已知N个正整数:A1.A2.--.An .今要将它们分成M组,使得各组数据的数值和最平均,即各组的均方差最小.均方差公式如下: 输入输出格式 输入格式: 输入文件data.in包括: 第一行 ...

  7. 解决perm size out of memeory的问题

    在idea中配置如下即可 -Xms1024m -Xmx1024m -XX:MaxNewSize=512m -XX:MaxPermSize=512m 如下图所示:

  8. itext转html为pdf遇到的问题

    记录一下使用itext将html文件转为pdf文件遇到的一些问题 1.中文不显示 原因:itext默认不支持中文 解决方法:引入中文字体 需要注意的是在java代码中设置好中文字体后,还需要在html ...

  9. TypeScript+Vue初体验Demo

    github: https://github.com/lanleilin/Typescript-Vue-Demo

  10. 【hdu1251-统计难题】Trie

    http://acm.hust.edu.cn/vjudge/problem/16379 题意:给定多个单词,多次询问符合某前缀的单词有多少个. 题解:tire.数组开了5*10^6才A,不然就RE. ...