伤害数字显示HUD

游戏中收到伤害掉血,会有飘动的伤害数值;

可以使用OnGUI中GUI.Label来实现;

可自定义字体,颜色,大小等;

如果需要更好看的数字特效,可以手动添加;

普通字体不够好看可以使用插件FontEditor自定义;

Demo展示

HUDPopup类

飘血数字类,创建一个空物体,将这个脚本挂上去,再将这个物体拖成预制体;

public class HUDPopup : MonoBehaviour
{
//目标位置
private Vector3 mTarget;
//屏幕坐标
private Vector3 mScreen;
//伤害数值
public int Value;
//文本宽度
public float ContentWidth;
//文本高度
public float ContentHeight;
//GUI坐标
private Vector2 mPoint;
//销毁时间
public float FreeTime = 1.5F;
public Font font;
public Color color;
public int fontSize;
public float speed;
void Start ()
{
//获取目标位置
mTarget = transform.position;
//获取屏幕坐标
mScreen = Camera.main.WorldToScreenPoint(mTarget);
//将屏幕坐标转化为GUI坐标
mPoint = new Vector2(mScreen.x, Screen.height - mScreen.y);
//开启自动销毁线程
StartCoroutine("Free");
} void Update()
{
//使文本在垂直方向山产生一个偏移
transform.Translate(Vector3.up * speed * Time.deltaTime);
//重新计算坐标
mTarget = transform.position;
//获取屏幕坐标
mScreen = Camera.main.WorldToScreenPoint(mTarget);
//将屏幕坐标转化为GUI坐标
mPoint = new Vector2(mScreen.x, Screen.height - mScreen.y);
} void OnGUI()
{
//保证目标在摄像机前方
if(mScreen.z>0)
{
//内部使用GUI坐标进行绘制
GUIStyle style = new GUIStyle();
style.fontSize = fontSize;
style.font = font;
style.normal.textColor = color;
GUI.Label(new Rect(mPoint.x, mPoint.y, ContentWidth, ContentHeight), "-"+Value.ToString(),style);
}
} IEnumerator Free()
{
yield return new WaitForSeconds(FreeTime);
Destroy(this.gameObject);
}
}

一些自定义属性,默认Color的透明度是0,如果出现不显示,可以看看这里;

使用时,在需要有掉血数字的物体上的脚本中实例化HUDPopup,创一个HUD预制体对象,放在该物体的子节点下某个位置(一般在怪物头顶创建一个空节点,用来当HUD的父物体);

测试类代码:

public class Test : MonoBehaviour
{
public GameObject popupDamage;
public Transform hudPos; private void Update()
{
if (Input.GetMouseButtonDown(0))
{
GameObject mObject = (GameObject)Instantiate(popupDamage, hudPos.position, Quaternion.identity);
mObject.GetComponent<HUDPopup>().Value = Random.Range(20, 40);
}
}
}

Unity——伤害数字显示HUD的更多相关文章

  1. 如何用Unity GUI制作HUD

    若知其所以然,自然知其然. HUD是指平视显示器,就是套在脸上,和你的眼睛固定在一起,HUD的意思就是界面咯,一般我们说HUD特指把3D空间中的界面的某些信息(比如血条,伤害之类)的贴在界面上,对应3 ...

  2. NGUI:HUD Text(头顶伤害漂浮文字)

    HUD Text 很早之前就有闻于NGUI中的HUD Text插件,今天得以尝试,看了会儿官方的文档,楞是没给看明白,官方的ReadMe.txt写的使用方法如下: 官网Usage 1. Attach ...

  3. Unity游戏中关于伤害范围的计算

    1.纯数学计算 范围计算 + 方向计算: 先将不在伤害范围的敌人排除掉,再计算处于伤害范围并且角度正确的敌人. 以上的计算是以人物的中心来计算的, 所以这中方式就有些局限性了,比如:一个四足怪物,只有 ...

  4. Unity UGUI HUD 怪物血条实现

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

  5. Unity《ATD》塔防RPG类3D游戏架构设计(一)

    目录 <ATD> 游戏简介 <ATD> 整体结构 <ATD> 游戏机制 Buff机制 Skill机制(技能机制) 仇恨机制 <ATD> 游戏模型 策划案 ...

  6. Unity——技能系统(三)

    Unity技能系统(三) Unity技能系统(一) Unity技能系统(二) Demo展示 六.Buff系统 buff分为增益和减益buff,应该区分开来: /// <summary> / ...

  7. Unity 最佳实践

    转帖:http://www.glenstevens.ca/unity3d-best-practices/ 另外可以参考:http://devmag.org.za/2012/07/12/50-tips- ...

  8. unity初始篇 选择游戏对象

    之前两任社长都在一直强调要写博客,一直没有写过,现在我已经踏上了博客的道路! 首先声明:本人才疏学浅,对unity认识不深,有错误的地方欢迎大家指出,在此谢过! 本文所说的选择对象,是指在游戏过程中动 ...

  9. GJM : 基于Actor模式的c#网络游戏服务器的实现和Unity游戏客户端的连接 [转载]

    感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...

随机推荐

  1. 聚类算法与K-means实现

    聚类算法与K-means实现 一.聚类算法的数学描述: 区别于监督学习的算法(回归,分类,预测等),无监督学习就是指训练样本的 label 未知,只能通过对无标记的训练样本的学习来揭示数据的内在规律和 ...

  2. Linux从头学11:理解了这三个概念,才能彻底理解任务管理和任务切换

    作 者:道哥,10+年的嵌入式开发老兵. 公众号:[IOT物联网小镇],专注于:C/C++.Linux操作系统.应用程序设计.物联网.单片机和嵌入式开发等领域. 公众号回复[书籍],获取 Linux. ...

  3. NOIP模拟22「d·e·f」

    T1:d   枚举.   现在都不敢随便打枚举了.   实际上我们只关注最后留下的矩阵中最小的长与宽即可.   所以我们将所有矩阵按a的降序排列.   从第\(n-m\)个开始枚举.   因为你最多拿 ...

  4. 第06课:GDB 常用命令详解(中)

    本课的核心内容: info 和 thread 命令 next.step.util.finish.return 和 jump 命令 info 和 thread 命令 在前面使用 info break 命 ...

  5. 硕盟 type-c转接头转接口(HDMI+VGA+USB3.0+PD3.0)四合一拓展坞

    硕盟SM-T54是一款 TYPE C转HDMI+VGA+USB3.0+PD3.0四合一多功能扩展坞,支持四口同时使用,您可以将含有USB 3.1协议的电脑主机,通过此产品连接到具有HDMI或VGA的显 ...

  6. 删除数组中指定的元素,然后将后面的元素向前移动一位,将最后一位设置为NULL 。 String[] strs={“aaa”,”ccc”,”ddd”,”eee”,”fff”,”ggg”}; 指定删除字符串“ccc”,把后的元素依次向前移动!!!

    public static void main(String[] args) { int temp = -1; String[] strs = {"aaa", "ccc& ...

  7. 最长公共前缀 js 实现代码

    编写一个函数来查找字符串数组中的最长公共前缀: 输入 : ["abca","abc","abca","abc",&quo ...

  8. js 签字插件

    1.jq-signature  http://bencentra.github.io/jq-signature/    支持的jquery版本低 2.HTML5 canvas   http://www ...

  9. PHP7兼容mysql_connect的方法

    在php7版本的时候,mysql_connect已经不再被支持了,本文将讲述在代码层面实现php7兼容mysql系列,mysql_connect等操作. PHP7不再兼容mysql系列函数,入mysq ...

  10. 取得get参数 从url

    1. getUrlParam.js define(function() { // url参数 var data, index; (function init() { data = []; index ...