unity3d 角色头顶信息3D&2D遮挡解决方案(一)
2015-02-01 23:18
891 查看
[align=left] 先上效果图,只凭文字描述,脑补应该有些困难- -[/align] [align=left] 如图:有三个角色(我们暂且从左到右叫它们A、B、C),一个2D UI(中间动作选择的框框),一个cube(右边的方块)[/align] [align=left] 更多精彩请关注【狗刨学习网】 [/align] [align=left] cube挡住了角色C的头顶信息[/align] [align=left] 2D UI挡住了角色和cube[/align] [align=left] 共同点是只显示未被遮挡的部分,遮挡的部分不显示[/align] [align=left] 相信大多数人在看我这篇文章之前已经看过雨松momo的《人物头顶名称与血条更新与绘制》[/align] [align=left] 如果直接使用雨松momo文章中的代码的话,那么你会发现有一些问题,如图[/align] [align=left] 这里我没有用血条,只绘制了文字,都一样的![/align] [align=left] 第一:因为是用OnGUI绘制的,所以使用的过程之中角色昵称和血条会挡住NGUI创建的UI。你可以脑补一下当你打开背包时,一排文字和血条挡住了你的背包。。。[/align] [align=left] 第二:当角色被其他物体遮挡时,这里我说的是3D物体,不是UI。怎么说比较好理解呢!!就好比角色走到了墙后面,角色已经被墙遮挡住了,但是角色昵称和血条依旧显示(或许有一些人就要这种效果!好吧,至少在我的项目中这种效果给我的感觉是非常差的)[/align] [align=left] 第三:当同一个场景出现两个角色时,两个角色都有自己的昵称和血条,如果你和另个角色距离太远且旋转了角度时,名称和血条居然奇迹的出现在了天上!没错,就是天上[/align] [align=left] ......以上所述只是指出一些bug,并没有多余的意思,大家勿喷,我也是菜鸟,只是和大家分享下经验!![/align] [align=left] 雨松momo的写这篇文章的目的也就是给大家一个思路,具体在项目中怎么实现成预想效果得靠自己了[/align] [align=left] 这个思路挺好,但是由于一些我自身项目的原因就暂且不用这个思路,这个思路大家可以去看看,以后肯定能用到[/align] [align=left] 现在用另外一种思路实现,这里我们要学到一个东西:Layer(层)[/align] [align=left] 关于layer的介绍请看圣典:http://game.ceeger.com/Components/Layers.html[/align] [align=left] 其实我自己也没有看过,为了写这篇文章才去搜的,自己没事的时候瞎点点就知道是干嘛的了[/align] [align=left] 因为我们要用到NGUI,所以先导入NGUI插件包[/align] [align=left]进入正题:[/align] [align=left] 1、创建一个空GameObject,改名为NamePanel,设为角色子物体,然后Reset并且调整位置到角色头顶位置[/align] [align=left] 2、将NamePanel的Layer设置和角色同一个层,并且添加一个UIPanel[/align] 3、在NamePanel下添加UILabel,方法为:选中NamePanel->NGUI->Create->Label,并且将Label Overflow属性设置为ResizeFreely(自动适应文字大小以及长度的) [align=left] 4、设置UILabel组件的属性。字体、显示文字、字体颜色。Effect选择OutLine,颜色选择为黑色,这个参数是描边的,让字体更清晰[/align] [align=left] 咦,搞毛啊,字体怎么这么大啊?把字体修改小一点,10、5、1,尼玛怎么还是这么大,而且还看不清了[/align] [align=left] 别急别急,不是你操作错误,是还没操作完![/align] [align=left] 我一开始遇到这个问题的时候我也纳闷了,后来想了想,有可能是没有添加UIRoot的原因[/align] [align=left] 用过NGUI的都知道,UIRoot是NGUI必不可少的一部分,在手机上自适应分辨率就靠它了[/align] [align=left] 那既然知道原因了,我们就添加一个UIRoot试试呗[/align] [align=left] 5、选择NamePanel,添加一个UIRoot组件,Scaling Style选择FixedSizeOnMobiles[/align] [align=left][/align] [align=left] 哈哈,字体恢复正常了!如果感觉字体比较小,可以在把字体调大一些[/align] [align=left] 运行游戏,你会发现角色移动的时候,头顶信息虽然跟随角色了,但是角色旋转或相机旋转的时候,头顶信息旋转面向摄像机。如果你就想这样,那是大大滴不行的,不能图方便就少了代码[/align] [align=left]现在我们来写代码,代码很简单[/align] <font face="宋体" size="2"> 1 public GameObject targets; 2 private Camera camera; 3 4 void Start() 5 { 6 //获得主摄像机 7 camera = Camera.main; 8 } 9 10 void Update() 11 { 12 //设置旋转角度 13 targets.transform.rotation = camera.transform.rotation; 14 }</font> 复制代码 [align=left] 保存代码,将脚本挂到角色上,然后把NamePanel拖到参数targets[/align] [align=left] 最后运行游戏,在看看效果,ok,完美[/align] [align=left]最后总结一下:[/align] [align=left] 代码上是非常简单的,看我代码就知道了,可以说就只有一句代码。。。[/align] [align=left] 主要就是设置层,层一定要分清楚,很重要![/align] |
相关文章推荐
- unity3d 角色头顶信息3D&2D遮挡解决方案(二)
- unity3d 角色头顶信息3D&2D遮挡解决方案(二)
- unity3d 角色头顶信息3D&2D遮挡解决方案(一)
- unity3d 摄像机跟随角色时被物体遮挡解决方案
- unity3d 摄像机跟随角色时被物体遮挡解决方案
- unity3d 摄像机跟随角色时被物体遮挡解决方案
- unity3D ShaderLab <五>漫反射光照改善技巧之使用2D ramp texture来创建一个假的BRDF(双向反射分布函数)
- DW中出现 "以下翻译器没有被装载,由于错误:xxxx.htm:有不正确的设置信息" 问题的解决方案
- unity2d角色防止二段跳解决方案
- Unity3d 角色穿墙, 或者互插的解决方案
- Unity3D开发——LeRunning的人物角色信息的显示
- Unity3D开发——LeRunning的人物角色信息的显示
- Unity3d触摸屏控制2D飞行射击类游戏角色
- 在使用Clearlooks&blubuntu-looks桌面主题时,启动gedit报的错误信息解决方案
- Unity3D——粒子系统被2D的NGUI或者UGUI遮挡的问题
- iOS 提示信息被键盘遮挡解决方案
- unity3d阶段性学习脚本代码(2个是摄像机跟随(2D游戏中的),1个是角色跳跃移动脚本)
- 部署错误:尚未授予访问 Tomcat 服务器的权限。请在服务器管理器的 Tomcat 定制器中设置 "manager-script" 角色的正确用户名和口令。 有关详细信息,请查看服务器日志。
- 安装 SQL SERVER 2008 必须使用 "角色管理工具" 错误 的 解决方案
- 时光煮雨 Unity3D实现2D人物动画② Unity2D 动画系统&资源效率