Unity实现游戏伤害数字显示HUD的方法
目录
- 伤害数字显示HUD
- Demo展示
- HUDPopup类
伤害数字显示HUD 游戏中收到伤害掉血,会有飘动的伤害数值;
可以使用OnGUI中GUI.Label来实现;
【Unity实现游戏伤害数字显示HUD的方法】可自定义字体,颜色,大小等;
如果需要更好看的数字特效,可以手动添加;
普通字体不够好看可以使用插件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().Value = https://www.it610.com/article/Random.Range(20, 40); }}}
到此这篇关于Unity实现游戏伤害数字显示HUD的方法的文章就介绍到这了,更多相关Unity 伤害数字显示HUD内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
推荐阅读
- 游戏IP(立足于玩家情感的粉丝经济)
- 关于QueryWrapper|关于QueryWrapper,实现MybatisPlus多表关联查询方式
- MybatisPlus使用queryWrapper如何实现复杂查询
- python学习之|python学习之 实现QQ自动发送消息
- 孩子不是实现父母欲望的工具——林哈夫
- opencv|opencv C++模板匹配的简单实现
- Node.js中readline模块实现终端输入
- java中如何实现重建二叉树
- 人生游戏--是游戏,还是人生()
- 人脸识别|【人脸识别系列】| 实现自动化妆