Unity——伤害数字显示HUD
伤害数字显示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的更多相关文章
- 如何用Unity GUI制作HUD
若知其所以然,自然知其然. HUD是指平视显示器,就是套在脸上,和你的眼睛固定在一起,HUD的意思就是界面咯,一般我们说HUD特指把3D空间中的界面的某些信息(比如血条,伤害之类)的贴在界面上,对应3 ...
- NGUI:HUD Text(头顶伤害漂浮文字)
HUD Text 很早之前就有闻于NGUI中的HUD Text插件,今天得以尝试,看了会儿官方的文档,楞是没给看明白,官方的ReadMe.txt写的使用方法如下: 官网Usage 1. Attach ...
- Unity游戏中关于伤害范围的计算
1.纯数学计算 范围计算 + 方向计算: 先将不在伤害范围的敌人排除掉,再计算处于伤害范围并且角度正确的敌人. 以上的计算是以人物的中心来计算的, 所以这中方式就有些局限性了,比如:一个四足怪物,只有 ...
- Unity UGUI HUD 怪物血条实现
首先做一个血条,创建一个名为Follow3DObject的脚本添加到血条控件上. Follow3DObject.cs的代码如下: using UnityEngine; using System.Col ...
- Unity《ATD》塔防RPG类3D游戏架构设计(一)
目录 <ATD> 游戏简介 <ATD> 整体结构 <ATD> 游戏机制 Buff机制 Skill机制(技能机制) 仇恨机制 <ATD> 游戏模型 策划案 ...
- Unity——技能系统(三)
Unity技能系统(三) Unity技能系统(一) Unity技能系统(二) Demo展示 六.Buff系统 buff分为增益和减益buff,应该区分开来: /// <summary> / ...
- Unity 最佳实践
转帖:http://www.glenstevens.ca/unity3d-best-practices/ 另外可以参考:http://devmag.org.za/2012/07/12/50-tips- ...
- unity初始篇 选择游戏对象
之前两任社长都在一直强调要写博客,一直没有写过,现在我已经踏上了博客的道路! 首先声明:本人才疏学浅,对unity认识不深,有错误的地方欢迎大家指出,在此谢过! 本文所说的选择对象,是指在游戏过程中动 ...
- GJM : 基于Actor模式的c#网络游戏服务器的实现和Unity游戏客户端的连接 [转载]
感谢您的阅读.喜欢的.有用的就请大哥大嫂们高抬贵手"推荐一下"吧!你的精神支持是博主强大的写作动力以及转载收藏动力.欢迎转载! 版权声明:本文原创发表于 [请点击连接前往] ,未经 ...
随机推荐
- 办公室文员必备python神器,将PDF文件表格转换成excel表格!
[阅读全文] 第三方库说明 # PDF读取第三方库 import pdfplumber # DataFrame 数据结果处理 import pandas as pd 初始化DataFrame数据对象 ...
- React Native startReactApplication 方法简析
在 React Native 启动流程简析 这篇文章里,我们梳理了 RN 的启动流程,最后的 startReactApplication 由于相对复杂且涉及到最终执行前端 js 的流程,我们单独将其提 ...
- K8s 系列(三) - 如何配置 etcd https 证书?
在 K8s 中,kube-apiserver 使用 etcd 对 REST object 资源进行持久化存储,本文介绍如何配置生成自签 https 证书,搭建 etcd 集群给 apiserver 使 ...
- abp element 显示分页
App.vue添加组件 <template> <div id="app"> <dataTable></dataTable> < ...
- FastAPI(4)- get 请求 - 路径参数 Path Parameters
什么是路径 假设一个 url 是: http://127.0.0.1:8080/items/abcd 那么路径 path 就是 /items/abcd 路径参数 就是将路径上的某一部分变成参数,可通过 ...
- pip国内源设置
在目录 C:\Users\Administrator下新建pip目录 C:\Users\Administrator\pip 添加 pip.ini 文件 pip.ini内容设置为 [global] in ...
- Windows 11抢先体验
SHA1值: 3B6DA9194BA303AC7DBBF2E521716C809500919C 谷歌云:https://drive.google.com/file/d/1sH0cBI9hwh8EdlV ...
- 使用 VSCode 给STM32配置一个串口 printf 工程
使用 VSCode 给STM32配置一个串口 printf 工程 gcc 重定向 printf 和 keil 不一样. 文件准备 先从以前的工程中拷过一份串口的代码来,然后在 main 函数中初始化串 ...
- 微信小程序 创建自己的第一个小程序
* 成为微信公众平台的开发者 注册 https://mp.weixin.qq.com * 登录 https://open.weixin.qq.com/ * 开发者工具下载 https://develo ...
- python+宝塔nginx+uwsgi的搭建方法
第一: 百度搜索宝塔,然后进入root,安装lnmp,根据情况选择选择需的选项进行安装,nginx必须安装. 第二: 进入宝塔,新建网站,网站的目录,先随便指定,绑定好的域名, 进入root,到宝塔网 ...