[Unity3D] Unity3D游戏开发之UGUI实现伤害数值显示
UGUI实现伤害数值显示的原理是在人物头顶放置空物体,然后将下面的脚本挂在空物体上,将该空物体制作为预制体;
using UnityEngine;
using System.Collections;public class PopupDamage : MonoBehaviour {//目标位置 private Vector3 mTarget;//屏幕坐标 private Vector3 mScreen;//伤害数值 public int Value;//文本宽度 public float ContentWidth = 100;//文本高度 public float ContentHeight = 50;//GUI坐标 private Vector2 mPoint;//销毁时间 public float FreeTime = 1.5F;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 * 1.5F * 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 = 30;style.normal.textColor = Color.red;GUI.Label(new Rect(mPoint.x, mPoint.y, ContentWidth, ContentHeight), "-"+Value.ToString(),style);}}IEnumerator Free(){yield return new WaitForSeconds(FreeTime);Destroy(this.gameObject);}
}
unity中的几种坐标体系:
2、Unity3D中常见的四种坐标系:
a、世界坐标:场景中物体的坐标,使用 transform.position获得。
b、屏幕坐标:以像素来定义的,以屏幕的左下角为(0,0)点,右上角为(Screen.width,Screen.height),Z的位置是以相机的世界单位来衡量的。如Input.mousePosition即为屏幕坐标。
d、GUI坐标:该坐标系以屏幕的左上角为(0,0)点,右下角为(Screen.width,Screen.height)。
3、在代码中我们将世界坐标先转化为屏幕坐标,再转化为GUI坐标
在人物受到伤害是,生成该预制体,方法如下:
GameObject damageGo = Instantiate(popupDamageGo,transform.position+new Vector3(0,10,0),Quaternion.identity) as GameObject;damageGo.GetComponent<PopupDamage>().Value = (int)damage;
[Unity3D] Unity3D游戏开发之UGUI实现伤害数值显示相关推荐
- Unity游戏开发之UGUI设计——制作一个游戏内置的控制台界面/作弊菜单(详细流程,附代码)
功能说明 今天要实现的功能就是老滚5.GTA.P社等游戏里面那个按下某个按键就能开启调试(开挂)的控制台组件.老规矩,直接上实际效果图: 如上图所示,输入输出文本的控制台本质上就是一个游戏中内嵌的命令 ...
- [整理]Unity3D游戏开发之Lua
原文1:[Unity3D]Unity3D游戏开发之Lua与游戏的不解之缘(上) 各位朋友,大家好,我是秦元培,欢迎大家关注我的博客,我地博客地址是blog.csdn.net/qinyuanpei.如果 ...
- [Unity3D]Unity3D游戏开发之伤害数值显示
大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei.众所周知,在RPG游戏策划中最为重要的一个环节是数值策划.数值策划是一个关于游戏平衡方面的概念 ...
- Unity3D游戏开发之伤害数值显示
众所周知,在RPG游戏策划中最为重要的一个环节是数值策划.数值策划是一个关于游戏平衡方面的概念,它是一种非常深奥的概念.游戏从某种意义上 是多种选择的组合,因此如果一个游戏失去平衡,那么就会减少选择而 ...
- libGDX游戏开发之Box2D(十四)
libGDX游戏开发之Box2D(十四) libGDX系列,游戏开发有unity3D巴拉巴拉的,为啥还用java开发?因为我是Java程序员emm-国内用libgdx比较少,多数情况需要去官网和goo ...
- 游戏开发之U3D插件EasyTouch5.x使用
游戏开发之U3D插件EasyTouch5.x使用 本篇只讲EasyTouch5.x的使用,不讲源码.本来想把EasyTouch5.x的使用手册翻译一遍,想来也是没那个时间. 第一 ...
- 开发中的“软”与“硬”:高画质移动游戏开发之道
摘要:游戏的效果不仅与游戏引擎的渲染相关,与硬件优化也有千丝万缕的联系.一款基于芯片优化的移动游戏界面,甚至可以堪比视频游戏的视觉效果.高通半导体事业部资深经理刘晓光从软硬件两个层面分享了移动游戏开发 ...
- DirectX游戏开发之3D角色动起(下)
DirectX游戏开发之3D角色动起(下) 直接先上图吧! 动作idle 动作attack 动作walk 动作run 看,多动作的模型搞下来了.原则上只要在此基础上略做修改就可以实现3d游戏的基本制作 ...
- 游戏开发之U3D实现技能图标冷却的效果
游戏开发之U3D实现技能图标冷却的效果 --本次使用的NGUI插件. 制作思路:NGUI插件里面有个UISprite组件,在它上面有个属性叫Type,改变相应的Type类型有不同的作用,本次使 ...
最新文章
- 考试题string——线段树。
- 树结构练习——排序二叉树的中序遍历
- 对比了 18000 个 Python 项目,这 TOP45 值得学习!
- talib 安装的问题
- 国内服务器带宽价格是多少?国内服务器带宽为什么贵?
- java减号的正则_java 正则匹配 特殊字符 减号- 的情况,处理方式
- ubuntu登录mysql报错:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mys
- matlab图像网格化像素提取像素扩大图片分块
- oracle 查询索引个数,Oracle数据库索引的创建和查询
- Mac 安装minikube Error: No available formula with the name “minikube“
- Windows 7 我的电脑-管理 打不开解决方法
- Java常见BUG集
- 如何爬取今日头条图片
- Andrew Ng宣布离职百度:将开启在人工智能领域的新篇章
- 商场智能触摸屏导视系统功能模块设计
- 随机梯度下降与动量详解
- 夜光 : 多 AGV 小车的路径规划技术的研究 (二)
- 网站性能优化实战(二)
- 王者服务器维护7月21日,王者荣耀7月21日更新了什么_7月21日更新内容汇总2020_3DM手游...
- Error (176310): Can't place multiple pins assigned to pin location Pin_F16 (IOPAD_X41_Y19_N14)关于nCEO
热门文章
- 关于暗黑3,暴雪,优秀团队的胡言乱语
- Python图形绘制
- 8700k超频测试软件,性能起飞!I7-8700K 手动超频和一键超频教程
- 【总结】1677- 三分钟,教你3种前端埋点方式!
- SAP企业移动平台开发探索系列10 – 使用SUP oData SDK开发Online Application
- 使用easyavs2bdnxml将ASS转SUP
- 2022年淘宝天猫双十一红包领取入口如何使用已领取到的淘宝天猫双11超级红包?
- 读书笔记《Spring Boot+Vue全栈开发实战》(下)
- C#底层库--操作Excel帮助类(读取、导出表格)
- mysql 1061 duplicate key name_Error: Duplicate key name 'PCS_STATS_IDX' (state=42000,code=1061)