求助,ugui做角色头顶名字不显示名字与血量

《冰风谷:增强版》人物头顶显示数字血量修改方法介绍
日 来源:3dm论坛 编辑:小黑妹
& &&《》中如何使人物头顶上显示血量?下面介绍的是玩家aefgijn分享的人物头顶显示数字血量的修改方法,感兴趣的玩家可以试试。
& & 打开配置文件Baldur.ini,里面有一行&Game Options&,&HP Over Head&,&0&
& & 把0改成1后,游戏里面的队员头顶就有数字血量显示了,个人觉得挺好用的。
冰风谷:增强版你感兴趣吗?
看完这篇文章有何感觉?
相关攻略及下载:11-1911-611-511-511-411-411-411-311-311-3
48小时热门评论
一周热点资讯
小姐姐,你这么喜欢喝酒啊?让我来陪你吧! 阿狸、阿卡丽、琴瑟仙女在列,有你喜欢的那个吗?
正值冬季特惠期间,玩家还怎么愉快地剁手! 扎克伯格打造的这项黑科技“贾维斯”,简直太帅了!
CopyRight&2004年-年 < 游迅网 All Rights Reserved
备案编号:沪ICP备号-6程序写累了,就来玩玩酷跑小游戏吧,嘿嘿。
雨松MOMO送你一首歌曲,嘿嘿。
Unity3D研究院之人物头顶名称与血条更新与绘制(二十六)
Unity3D研究院之人物头顶名称与血条更新与绘制(二十六)
围观47673次
编辑日期: 字体:
人物的名称与血条的绘制方法很简单,但是我们需要解决的问题是如何在3D世界中寻找合适的坐标。因为3D世界中的人物是会移动的,它是在3D世界中移动,并不是在2D平面中移动,但是我们需要将3D的人物坐标换算成2D平面中的坐标,继而找到人物头顶在屏幕中的2D坐标最后使用GUI将名称与血条绘制出来。
首先学习本文的重点内容,如何将游戏世界中任意3D坐标转换成屏幕中的2D坐标。根据这个方法计算出的2D坐标屏幕左下角的点为0.0 ,屏幕右上角的坐标为1.1 所以真实的2D坐标还得通过Screen.height 与Screen.width计算一下才行。
Vector2 position = camera.WorldToScreenPoint (worldPosition);
在Unity工程导入角色控制器组件,不知道角色控制器的朋友请阅读我之前的文章哈。创建一个Plane做为游戏的地面,然后利用角色控制器组件创建两个模型,一个做为主角,一个作为NPC,主角可以通过控制来移动从四周来观察NPC对象。由于地面的面积比较小移动主角时为了避免主角越界掉下去,我们做一个边界的物理层。物理层其实很简单,就是给平面四周放置四个平面在四周将平面包围着,给四周的四个平面绑定上Box Collider组件,这样主角就不会越界掉下去啦。因为没有给贴图所以效果上看不到这四个对象。哇咔咔~ 如下图所示,在场景是途中主角被四个平面包围这,即时它拼命的想往外条但是还是跳不出去,哈哈。
创建脚本NPC.cs 然后把脚本挂在NPC对象身上,在脚本中我们绘制主角的血条以及名称。
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
using UnityEngine;using System.Collections;&public class NPC : MonoBehaviour {& //主摄像机对象 private Camera camera; //NPC名称 private string name = "我是雨松MOMO";& //主角对象 GameObject hero; //NPC模型高度 float npcHeight; //红色血条贴图 public Texture2D blood_red; //黑色血条贴图 public Texture2D blood_black;&&&&//默认NPC血值 private int HP = 100;& void Start () {
//根据Tag得到主角对象
hero = GameObject.FindGameObjectWithTag("Player");
//得到摄像机对象
camera = Camera.main;&
//得到模型原始高度
float size_y = collider.bounds.size.y;
//得到模型缩放比例
float scal_y = transform.localScale.y;
//它们的乘积就是高度
npcHeight = (size_y *scal_y) ;& }& void Update () {
//保持NPC一直面朝主角
transform.LookAt(hero.transform); }& void OnGUI() {
//得到NPC头顶在3D世界中的坐标
//默认NPC坐标点在脚底下,所以这里加上npcHeight它模型的高度即可
Vector3 worldPosition = new Vector3 (transform.position.x , transform.position.y + npcHeight,transform.position.z);
//根据NPC头顶的3D坐标换算成它在2D屏幕中的坐标
Vector2 position = camera.WorldToScreenPoint (worldPosition);
//得到真实NPC头顶的2D坐标
position = new Vector2 (position.x, Screen.height - position.y);
//计算出血条的宽高
Vector2 bloodSize = GUI.skin.label.CalcSize (new GUIContent(blood_red));&
//通过血值计算红色血条显示区域
int blood_width = blood_red.width * HP/100;
//先绘制黑色血条
GUI.DrawTexture(new Rect(position.x - (bloodSize.x/2),position.y - bloodSize.y ,bloodSize.x,bloodSize.y),blood_black);
//在绘制红色血条
GUI.DrawTexture(new Rect(position.x - (bloodSize.x/2),position.y - bloodSize.y ,blood_width,bloodSize.y),blood_red);&
//计算NPC名称的宽高
Vector2 nameSize = GUI.skin.label.CalcSize (new GUIContent(name));
//设置显示颜色为黄色
GUI.color&&= Color.yellow;
//绘制NPC名称
GUI.Label(new Rect(position.x - (nameSize.x/2),position.y - nameSize.y - bloodSize.y ,nameSize.x,nameSize.y), name);& }& //下面是经典鼠标点击对象的事件,大家看一下就应该知道是什么意思啦。 void OnMouseDrag () {
Debug.Log("鼠标拖动该模型区域时"); }& void OnMouseDown() {
Debug.Log("鼠标按下时");&
}& } void OnMouseUp() {
Debug.Log("鼠标抬起时"); }& void OnMouseEnter() {
Debug.Log("鼠标进入该对象区域时"); } void OnMouseExit() {
Debug.Log("鼠标离开该模型区域时"); } void OnMouseOver() {
Debug.Log("鼠标停留在该对象区域时"); }&}
注解1:通过collider.bounds.size 可以拿到模型对应三个轴向的高度,但是模型是可以缩放的,所以真实的模型高度应当是原始高度乘以缩放系数才行。 transform.localScale可以拿到模型对应三个轴向的缩放系数,因为这里我们需要模型的高度,所以忽略X轴与Z轴。
注解2:在这里我们计算血条的宽度,GUI.skin.label.Calcsize()这个方法是以默认的皮肤对象Label对象去参数对象的宽高。参数是new GUIContent(blood_Red)意思是拿红色血条的贴图的宽高,它将保存在返回的size中。最后以宽高将血条绘制在屏幕中,我们的血条采取两层。背景是黑色的,前面是红色的,当人物费血时红色血条减少。
注解3: 这里通过字符串来获取它整体的宽度与高度,因为NPC的名称是可变的,所以我们需要动态的获取整体的显示区域。同样是以GUI.skin.label对象去调用CalcSize。
如下图所示,当使用鼠标点击NPC对象时,NPC头顶的血条将开始发生减血。这个例子我使用OnGUI绘制当然大家也可以在Hierarchy 视图中的创建GUI Texture 或者GUI Text对象 来实现,不过原理都是这样的 大家可以试试 哇咔咔。
最后雨松MOMO希望和大家一起进步,一起学习,哇咔咔~
本章内容下载地址:
补充,现在都用NGUI来做血条,大家看看我的这篇文章吧。
本文固定链接:
转载请注明:
雨松MOMO提醒您:亲,如果您觉得本文不错,快快将这篇文章分享出去吧 。另外请点击网站顶部彩色广告或者捐赠支持本站发展,谢谢!
作者:雨松MOMO
专注移动互联网,Unity3D游戏开发
如果您愿意花10块钱请我喝一杯咖啡的话,请用手机扫描二维码即可通过支付宝直接向我捐款哦。
您可能还会对这些文章感兴趣!专业的QQ下载站 本站非腾讯QQ官方网站
本类阅读排行
12345678910
热点图文新闻
LOL如何隐藏玩家名字 不显示角色名字方法
导读:LOL如何隐藏玩家名字?不显示角色名字方法。召唤师们是否在看直播的时候,看到主播们的角色头上是没有显示玩家的id的呢?因为游戏中的玩家id有时候会叠在一起,导致我们看不清自己和敌方的血量,所以隐藏掉玩家的id也不失是一种明智的选择。那么到底有没有办法来隐藏游戏中的玩家id呢,答案当然是有的,下面就由小编来交给大家进行设置。
LOL如何隐藏玩家名字?不显示角色名字方法。召唤师们是否在看直播的时候,看到主播们的角色头上是没有显示玩家的id的呢?因为游戏中的玩家id有时候会叠在一起,导致我们看不清自己和敌方的血量,所以隐藏掉玩家的id也不失是一种明智的选择。那么到底有没有办法来隐藏游戏中的玩家id呢,答案当然是有的,下面就由小编来交给大家进行设置。首先我们进入游戏按Esc键打开游戏设置,然后点击左侧选项中的界面,然后下拉看到生命槽和资源槽下的显示召唤师名字,把这个选项勾掉就可以啦,和下图一样就可以达到上图的效果了!是不是看起来清爽很多呢?再也不用担心自己的血条和敌人的血条叠到一起了。
作者:qqtn小影
阅读本文后您有什么感想? 已有 0 人给出评价!求助 人物头上的这种血条怎么去掉_剑网3吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0可签7级以上的吧50个
本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:3,770,661贴子:
求助 人物头上的这种血条怎么去掉
掉线上来后人物头上多了这种血条,满屏都是,卡的要死,求教怎么去掉请忽略我渣渣的打码
如题,我只是想把一个人...
艾泽拉斯的小伙伴们 不...
贵重物品都在身上 我弃...
我只知道四代
「怪物猎人OL」今日雷鸣公测,百万Q大狂欢,100%送Q币,最高1000,更有公测福利大放送雷鸣公测,圣诞狂欢!24日,25日21:30准点在线,永久时装来就送,更有圣诞大礼包!
不要沉啊,果然秒沉体质现在满屏还都是这种血条,看了心塞,求好心人告知怎么去掉啊
求不沉,在线等啊,好心人看我一眼
插件灰太狼,取消美化血条,应该是这个
这个血条插件,就一傻逼插件,我一上游戏立马火大,弄了好久才去掉。
哈哈哈哈哈哈哈哈哈哈哈哈哈哈哈    ------我爱东都洛阳城 长枪独守大唐魂 伟大领袖李承恩 带领我们任驰骋
esc界面设置里有个显示设置里面头顶显示血条不勾选
当一个人沉入海底,当一艘船成了谜
第一次看到这个我还以为打开了某网页游戏……
贴吧热议榜
使用签名档&&
保存至快速回贴}

我要回帖

更多关于 eui 头顶名字 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信