ngui怎么样用脚本控制ngui血条跟随的进度

额头深刻的皱纹和斑驳的脸庞,让人感受到岁月的无情。
当地人给断掉的鼻子贴上了创口贴,一时在网上走红。
声明:本文由入驻搜狐公众平台的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
  上一次我们完成了字体的制作,这次我们完成HUD的显示吧!
  首先,我们知道我们可以将NGUI的Label摆在任意位置,而我们3D场景中的人物是移动的,可能远,可能近,也可以在左右或者上下,那么我们必须让这个Label根据我们的人物进行移动。让Label的坐标和人物的坐标相关联。我们先制作一个Label的预制体,命名为HUD;然后创建一个代码文件输入一下代码:
  voidStart()
  MyUICamera= NGUITools.FindCameraForLayer(LayerMask.NameToLayer(&map&));
  transform.localScale= Vector3.one;
  Vector3 pos= Camera.main.WorldToScreenPoint(v_Pos);//获取目标物体的屏幕坐标
  pos= MyUICamera.ScreenToWorldPoint(pos); //将屏幕坐标转换为UI的世界坐标
  pos.z= 0;//由于NGUI 2D界面的Z轴都为0
  transform.position= pos; //将修改过的坐标赋给UI界面
  transform.GetComponent&UILabel& ().text= HurtNum.ToString();
  一个一个解释一下:
  MyUICamera= NGUITools.FindCameraForLayer(LayerMask.NameToLayer(&map&));
  这行代码时NGUI自带的根据LayerMask查找相机的代码,我们在这里找的时NGUI的相机,也就是如下图的这个:
  transform.localScale= Vector3.one;
  这里要将自己的比例设置成1:1:1,不然会放大。
  Vector3pos= Camera.main.WorldToScreenPoint(v_Pos);
  v_Pos是我们3D物体要显示的位置,我们将这个位置转换到屏幕的坐标系中。
  pos= MyUICamera.ScreenToWorldPoint(pos);
  然后将这个位置从屏幕坐标系中转换到我们的NGUI的摄像机坐标系。
  原理很简单,因为我们的NGUI的位置是在世界坐标上的,所以需要转到世界坐标系。
  transform.position= pos;将我们的位置设置给HUD;这样,我们的的HUD的位置就会跟着我们的物体了。
  transform.GetComponent&UILabel& ().text= HurtNum.ToString();
  最后,我们将伤害赋值上去;
  代码卸载Start中的原因是,因为显示的出血量是不会一直跟着物体的,只是在出现的时候出现在一个位置,然后向上飘动。
  那么理解以上代码之后在看看下面的代码,向上飘动:
  void Update()
  if(LeftTime& 0)
  Colorcolor= transform.GetComponent&UILabel&().color;
  transform.Translate(Vector3.up* Time.deltaTime*( MoveSpeed/10));
  if(LeftTime&1.0f)
  color.a-= Time.deltaTime*2;
  elseif(color.a& 1)
  color.a+= Time.deltaTime*3;
  transform.GetComponent&UILabel&().color= color;
  LeftTime-= Time.deltaTime;
  Destroy(gameObject);
  LeftTime是HUD存在的时间,如果超过这个时间就清除掉他。
  Colorcolor= transform.GetComponent&UILabel&().color;
  在这里我们获取了Label字体的颜色,我们需要做淡入淡出的效果。
  transform.Translate(Vector3.up* Time.deltaTime*( MoveSpeed/10));
  这里就是HUD向上移动的效果了。
  if(LeftTime&1.0f)
  color.a-= Time.deltaTime*2;
  }elseif(color.a& 1)
  color.a+= Time.deltaTime*3;
  这部分代码是根据时间,让HUD淡入,然后再淡出。只要设置透明度alpha就可以。
  transform.GetComponent&UILabel&().color= color;
  将颜色设置回去,让他显示。
  LeftTime-= Time.deltaTime;
  存活时间减少,这样才能让他消失。
  完整代码如下:
  usingUnityEngine;
  usingSystem.Collections;
  publicclassHUD: MonoBehaviour
  publicfloatHurtNum= 0f;
  publicfloatMoveSpeed= 1.0f;
  publicVector3v_Pos;
  publicCameraMyUICamera;
  publicfloatLeftTime= 0f;
  // Use this for initialization
  voidStart()
  MyUICamera= NGUITools.FindCameraForLayer(LayerMask.NameToLayer(&map&));
  transform.localScale= Vector3.one;
  Vector3pos= Camera.main.WorldToScreenPoint(v_Pos);//获取目标物体的屏幕坐标
  pos= MyUICamera.ScreenToWorldPoint(pos);//将屏幕坐标转换为UI的世界坐标
  pos.z= 0f;//由于NGUI2D界面的Z轴都为0
  transform.position= pos;//将修改过的坐标赋给UI界面
  transform.GetComponent&UILabel& ().text= HurtNum.ToString();
  // Update is called once per frame
  voidUpdate()
  if(LeftTime& 0f)
  Colorcolor= transform.GetComponent&UILabel&().color;
  transform.Translate(Vector3.up* Time.deltaTime*( MoveSpeed/10));
  if(LeftTime&1.0f)
  color.a-= Time.deltaTime*2;
  elseif(color.a& 1)
  color.a+= Time.deltaTime*3;
  transform.GetComponent&UILabel&().color= color;
  LeftTime-= Time.deltaTime;
  Destroy(gameObject);
  }// end class
  怎么使用这个HUD呢?
  我们只需要创建就可以了,代码如下:
  ///&summary&
  ///显示HUD
  ///&/summary&
  ///&paramname=&HUDPos&&HUD产生的位置&/param&
  ///&paramname=&HurtNum&&显示的伤害&/param&
  ///&paramname=&LeftTime&&显示到消失的时间(默认2秒)&/param&
  ///&paramname=&MoveSpeed&&向上移动的速度&/param&
  publicvoidShowHUD(Vector3HUDPos,intHurtNum,floatLeftTime= 2.0f,floatMoveSpeed= 1.0f)
  GameObjectg= (GameObject)Object.Instantiate(GameStart.Instance.HUDPrefab);
  g.transform.parent= GameObject.Find(&UI Root&).transform;
  HUDhud= g.transform.GetComponent&HUD&();
  hud.v_Pos= HUDPos;
  hud.LeftTime= 2.0f;
  hud.HurtNum= HurtNum;
  上面的代码很清晰了,就是穿件一个HUD预制体,然后将这个对象放入UIRoot作为它的子物体,获取HUD脚本,传入显示伤害的位置,显示的时间,伤害数值。这样,HUD就可以出现了。效果如下:
  好了,显示HUD我就完成了,完整的工程在如下链接中:
  /s/1gfC2S3D
  那么感谢大家的阅读。鱼都会的东西,你也会。o( ̄ ̄*)g)) ̄ ̄*)o
欢迎举报抄袭、转载、暴力色情及含有欺诈和虚假信息的不良文章。
请先登录再操作
请先登录再操作
微信扫一扫分享至朋友圈
搜狐公众平台官方账号
生活时尚&搭配博主 /生活时尚自媒体 /时尚类书籍作者
搜狐网教育频道官方账号
全球最大华文占星网站-专业研究星座命理及测算服务机构
主演:黄晓明/陈乔恩/乔任梁/谢君豪/吕佳容/戚迹
主演:陈晓/陈妍希/张馨予/杨明娜/毛晓彤/孙耀琦
主演:陈键锋/李依晓/张迪/郑亦桐/张明明/何彦霓
主演:尚格?云顿/乔?弗拉尼甘/Bianca Bree
主演:艾斯?库珀/ 查宁?塔图姆/ 乔纳?希尔
baby14岁写真曝光
李冰冰向成龙撒娇争宠
李湘遭闺蜜曝光旧爱
美女模特教老板走秀
曝搬砖男神奇葩择偶观
柳岩被迫成赚钱工具
大屁小P虐心恋
匆匆那年大结局
乔杉遭粉丝骚扰
男闺蜜的尴尬初夜
客服热线:86-10-
客服邮箱:NGUI(16)
首先建2个Sprite一个做背景一个做前景:
给背景添加一个脚本如图progress bar Script。然后拖到对应的位置。然后就就ok了。。。
接下来就开始设置目标跟随。首先建立一个Cube作为被跟随目标,然后给bg加一个Follow Target脚本(此脚本在HUDText插件里,要安装这个插件)。然后把对应的东西拖到脚本的位置。如图:
cube下面建立了一个空GameObject因为拖过去的物体对应到了cube的中心,然而血条要在cube的上面,所以建立一个空Gameobject作为cube的子类但中心放到cube上面。
而那两个camera分别对应的是主摄像机和UI的摄像机。如图:
运行结果:cube移动,血条就会跟着移动。当cube移动到屏幕的外面可以设定上面脚本上的Disable if Invisible来设定血条是否显示。OK。。。。So easy
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:82082次
积分:2224
积分:2224
排名:第14005名
原创:135篇
转载:41篇
评论:17条
(2)(15)(11)(14)(10)(4)(1)(4)(1)(1)(5)(3)(2)(6)(2)(4)(13)(6)(8)(6)(2)(18)(41)NGUI,类似于LOL血条制作教程_unity3d吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:62,702贴子:
NGUI,类似于LOL血条制作教程收藏
蛮牛上的那个NGUI教程看起来有点怪怪的,血条出来了距离远的和距离近的血条大小一样,没有层次感
CGWANG原画培训 「零基础全额退费保障」,原画名企委托培训,高薪工作不是梦
原来你不会啊!
换成3d摄像机
换成3d摄像机
[url]http://另类血条制作[3][/url]你搜索我这个教程,你就会学到一个简单的实现方法,当然蛮牛里也有,整套的教程
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或

我要回帖

更多关于 unity ngui 血条跟随 的文章

 

随机推荐