unity3d 血液
这里的人物头像和血条是在3d世界生成的,所以有真正的纵深感和遮挡关系,废话不多说,看我是怎么实现的。
第一步。先在UI Root里制作头像和血条。
这个制作步骤基本和我前面一篇文章介绍头像血条的制作步骤一致,以下我截个图。
就是上面的HeroPanel,东西非常easy,创建一个主面板HeroPanel。然后在里面创建一个Slider,用来显示血条,再创建一个sprite。用来显示头像,我这里另一个sprite是头像的背景框,然后调整位置和血条的颜色,不知道怎么做的看我前面的头像血条的文章,做完是这个样子:
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbHpocTE5ODI=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" style="border:none; max-width:100%">
第二步,把头像和血条做成prefab。
把上面制作的HeroPanel拖到Project的Resources目录下(Project->Assets->Resources)。没有Resources目录的自己创建一个,为了将来的载入。这样就生成了HeroPanel的prefab,然后就能够把之前UI Root下的那个删掉了。
第三步。进入程序。
上面的准备工作OK后,就是编程环节了。
我的每一个角色下挂了一个Npc脚本,在Npc脚本的Start里载入HeroPanel的prefab。
- GameObject heroPanel = Resources.Load("HeroPanel") as GameObject;
- _heroPanel = Instantiate(heroPanel, transform.position, transform.rotation) as GameObject;
- _heroPanel.transform.localScale = new Vector3(0.006f, 0.006f, 0.006f);
- _bloodSlider = _heroPanel.GetComponentInChildren<UISlider>();
- _heroHeight = gameObject.collider.bounds.size.y;
上面代码非常easy,先是载入HeroPanel的prefab,然后生成实例_heroPanel,然后调整大小,这个一定要调成自己想要的大小。不然大的不忍直视啊。接着获取里面的UISlider脚本,赋给变量_bloodSlider,后面用得到。
假设想改变头像图片能够在这里操作,我就不改了。最后获取该角色的身高。用其碰撞盒获取,后面Update里计算坐标用得到。
然后就是Update部分:
- Vector3 pos = new Vector3(transform.position.x, transform.position.y+_heroHeight+HEAD_OFFSET, transform.position.z);
- _heroPanel.transform.position = pos;
- _heroPanel.transform.rotation = Camera.main.transform.rotation;
在Update里要随时获得角色的坐标。最重要的就是y坐标,由于要放到角色头顶上,所以这时就用到了前面的_heroHeight。后面又加了个HEAD_OFFSET,是偏移量,我这是1.0,然后把这个坐标赋给_heroPanel,这样头像血条就跟着角色走了。但另一点别忘了,就是它的朝向问题。你要时刻保持这个面板朝向摄像机,这就是第三句代码的作用。
行。在这里,你必须实现的基本功能,非常easy对,剩下的就是的血slider该,这和我以前的文章介绍如何使用相同的血。这里是变化_bloodSlider的value值。它是该百分比,在这里,我不引进。哈哈,磕踢。
unity3d 血液的更多相关文章
- unity3d Human skin real time rendering with blood and water drop effect真实模拟人皮实时渲染之血液和水珠掉落效果
在之前的一篇(链接在此)文章中写了下关于真实模拟皮肤渲染,在此基础之上又想加上血液效果,在洗澡的时候(= =:)又想在skin上加上水珠的效果,所以研究了下,做出来效果感觉还不错,放下效果图: 水珠 ...
- [Unity3D]Unity3D叙利亚NGUI血液和技能的冷却效果
---------------------------------------------------------------------------------------------------- ...
- Unity3D插件分享
网上看到一个讲unity3D插件的,看着不错,转载过来. 本文汇总了近百个Unity3D插件,供大家参考下载. 2D_Toolkit_1.51 动画开发插件包 FingerGestures 触摸插件 ...
- Unity3D 插件大全
2D_Toolkit 2d动画开发插件包 FingerGestures 触摸插件 ORK_Okashi_RPG_Kit Unity3D角色扮演游戏开发工具包 uScript-Visual-Script ...
- Unity3D 200个插件免费分享
插件清单: 2D_Toolkit_1.51 动画开发插件包 FingerGestures 触摸插件 ORK_Okashi_RPG_Kit Unity3D角色扮演 ...
- Unity3d插件推荐
2D_Toolkit_1.51 动画开发插件包 FingerGestures 触摸插件 ORK_Okashi_RPG_Kit Unity3D角色扮演游戏开发工具包 uScript-Visual-Scr ...
- Unity3d 屏幕空间人体皮肤知觉渲染&次表面散射Screen-Space Perceptual Rendering & Subsurface Scattering of Human Skin
之前的人皮渲染相关 前篇1:unity3d Human skin real time rendering 真实模拟人皮实时渲染 前篇2:unity3d Human skin real time ren ...
- Unity3d学习 预设体(prefab)的一些理解
之前一直在想如果要在Unity3d上创建很多个具有相同结构的对象,是如何做的,后来查了相关资料发现预设体可以解决这个问题! 预设体的概念: 组件的集合体 , 预制物体可以实例化成游戏对象. 创建预设体 ...
- Unity3d入门 - 关于unity工具的熟悉
上周由于工作内容较多,花在unity上学习的时间不多,但总归还是学习了一些东西,内容如下: .1 根据相关的教程在mac上安装了unity. .2 学习了unity的主要的工具分布和对应工具的相关的功 ...
随机推荐
- Html5响应式设计与实现广场
由于提出的想法响应式设计,越来越多的网站使用这样的思想.各类大型网站如雨后春笋般涌了出来.例如:小米商城.天猫等. 至于响应式设计的概念等大家能够去百度百度,我这里就不相信解说了.直接为大家带来源代码 ...
- T-SQL使用案例——结果数据前面自动补0
原文:T-SQL使用案例--结果数据前面自动补0 现象: 在开发的过程中,往往需要数字和字符串互转.在转换的过程中,可能需要把1编程00001,这样的格式.实现这种样子是有非常多的方法,本文主要提供一 ...
- 编译的依赖不能vs的release工程
前言: 今天,我们正在做一个ocx插件的时候,放到刚装好win7系统的虚拟机上面注冊,弹出以下的一个错误提示: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQ ...
- Down to the TLP: How PCI express devices talk (Part II)
http://xillybus.com/tutorials/pci-express-tlp-pcie-primer-tutorial-guide-2 Data Link Layer Packets A ...
- 正则获取URL参数
一 获取指定URL参数 function getUrlParams(name) { var reg = new RegExp("(^|&)" + name + " ...
- HDU 3729 I'm Telling the Truth(二部图最大匹配+结果输出)
职务地址:HDU 3729 二分图最大匹配+按字典序输出结果. 仅仅要从数字大的開始匹配就能够保证字典序最大了.群里有人问. . 就顺手写了这题. . 代码例如以下: #include <ios ...
- 什么是WEBserver? 经常使用的WEBserver有哪些?
什么是WEBserver? 经常使用的WEBserver有哪些? 一.什么是WEBserver Webserver能够解析HTTP协议.当Webserver接收到一个HTTP请求,会返回一个HTTP响 ...
- OCP读书笔记(23) - 题库(ExamC)
200.Which operation requires that you create an auxiliary instance manually before executing the ope ...
- sql小总结2
SQL NULL 值 如果表中的某个列是可选的,那么我们可以在不向该列添加值的情况下插入新记录或更新已有的记录.这意味着该字段将以 NULL 值保存. NULL 值的处理方式与其他值不同. NULL ...
- NYNU_省赛选拔题(5)
题目描述 P 的一家要出去旅游,买了当地的地图,发现各地分别由各个景点,若 P 想使家人分队去景点,尽快到达各个景点(必须所有景点),并且最终所有家人都到达 M 所在的景点. 你用程序告诉 P 最 ...
