这里的人物头像和血条是在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。

[csharp] view
plain
copy

  1. GameObject heroPanel = Resources.Load("HeroPanel") as GameObject;
  2. _heroPanel = Instantiate(heroPanel, transform.position, transform.rotation) as GameObject;
  3. _heroPanel.transform.localScale = new Vector3(0.006f, 0.006f, 0.006f);
  4. _bloodSlider = _heroPanel.GetComponentInChildren<UISlider>();
  5. _heroHeight = gameObject.collider.bounds.size.y;

上面代码非常easy,先是载入HeroPanel的prefab,然后生成实例_heroPanel,然后调整大小,这个一定要调成自己想要的大小。不然大的不忍直视啊。接着获取里面的UISlider脚本,赋给变量_bloodSlider,后面用得到。

假设想改变头像图片能够在这里操作,我就不改了。最后获取该角色的身高。用其碰撞盒获取,后面Update里计算坐标用得到。

然后就是Update部分:

[csharp] view
plain
copy

  1. Vector3 pos = new Vector3(transform.position.x, transform.position.y+_heroHeight+HEAD_OFFSET, transform.position.z);
  2. _heroPanel.transform.position = pos;
  3. _heroPanel.transform.rotation = Camera.main.transform.rotation;

在Update里要随时获得角色的坐标。最重要的就是y坐标,由于要放到角色头顶上,所以这时就用到了前面的_heroHeight。后面又加了个HEAD_OFFSET,是偏移量,我这是1.0,然后把这个坐标赋给_heroPanel,这样头像血条就跟着角色走了。但另一点别忘了,就是它的朝向问题。你要时刻保持这个面板朝向摄像机,这就是第三句代码的作用。

行。在这里,你必须实现的基本功能,非常easy对,剩下的就是的血slider该,这和我以前的文章介绍如何使用相同的血。这里是变化_bloodSlider的value值。它是该百分比,在这里,我不引进。哈哈,磕踢。

unity3d 血液的更多相关文章

  1. unity3d Human skin real time rendering with blood and water drop effect真实模拟人皮实时渲染之血液和水珠掉落效果

    在之前的一篇(链接在此)文章中写了下关于真实模拟皮肤渲染,在此基础之上又想加上血液效果,在洗澡的时候(=  =:)又想在skin上加上水珠的效果,所以研究了下,做出来效果感觉还不错,放下效果图: 水珠 ...

  2. [Unity3D]Unity3D叙利亚NGUI血液和技能的冷却效果

    ---------------------------------------------------------------------------------------------------- ...

  3. Unity3D插件分享

    网上看到一个讲unity3D插件的,看着不错,转载过来. 本文汇总了近百个Unity3D插件,供大家参考下载. 2D_Toolkit_1.51 动画开发插件包 FingerGestures 触摸插件 ...

  4. Unity3D 插件大全

    2D_Toolkit 2d动画开发插件包 FingerGestures 触摸插件 ORK_Okashi_RPG_Kit Unity3D角色扮演游戏开发工具包 uScript-Visual-Script ...

  5. Unity3D 200个插件免费分享

    插件清单: 2D_Toolkit_1.51     动画开发插件包 FingerGestures           触摸插件 ORK_Okashi_RPG_Kit       Unity3D角色扮演 ...

  6. Unity3d插件推荐

    2D_Toolkit_1.51 动画开发插件包 FingerGestures 触摸插件 ORK_Okashi_RPG_Kit Unity3D角色扮演游戏开发工具包 uScript-Visual-Scr ...

  7. Unity3d 屏幕空间人体皮肤知觉渲染&次表面散射Screen-Space Perceptual Rendering & Subsurface Scattering of Human Skin

    之前的人皮渲染相关 前篇1:unity3d Human skin real time rendering 真实模拟人皮实时渲染 前篇2:unity3d Human skin real time ren ...

  8. Unity3d学习 预设体(prefab)的一些理解

    之前一直在想如果要在Unity3d上创建很多个具有相同结构的对象,是如何做的,后来查了相关资料发现预设体可以解决这个问题! 预设体的概念: 组件的集合体 , 预制物体可以实例化成游戏对象. 创建预设体 ...

  9. Unity3d入门 - 关于unity工具的熟悉

    上周由于工作内容较多,花在unity上学习的时间不多,但总归还是学习了一些东西,内容如下: .1 根据相关的教程在mac上安装了unity. .2 学习了unity的主要的工具分布和对应工具的相关的功 ...

随机推荐

  1. URL压缩算法的短地址

    时下,短网址应用已经在全国各大微博上開始流行了起来.比如QQ微博的url.cn,新郎的t.cn等. 我们在新浪微博上公布网址的时候.微博会自己主动判别网址.并将其转换,比如:http://t.cn/h ...

  2. hdu1381 Crazy Search(hash map)

    题目意思: 给出一个字符串和字串的长度,求出该字符串的全部给定长度的字串的个数(不同样). 题目分析: 此题为简单的字符串哈hash map问题,能够直接调用STL里的map类. map<str ...

  3. android adb 不同的方式使用特定的解释

    本文介绍windows 在程序中使用adb 方法.没有引进adb 该命令. 1) 启动adb 流程.获得输出从管道. 这样的方式的弊端有多少,我也不知道.反正就是各种问题吧.可是眼下我问过非常多朋友. ...

  4. swift 笔记 (十九) —— 协议

    协议(Protocols) 协议仅是用定义某些任务或者是功能必须的方法和属性. 类似于java里的interface的作用.但协议并不会实现详细的功能. 我猜这个名字源于OO中提到的"契约& ...

  5. hdu3836联通的强还原性点

    Equivalent Sets Time Limit: 12000/4000 MS (Java/Others)    Memory Limit: 104857/104857 K (Java/Other ...

  6. android做设计的每一个屏幕尺寸和分辨率(一个)

    一个.与分辨率无关 1.使用dp(dpi) Android密度不依赖像素(dp)指定屏幕尺寸,它同意不同的屏幕尺寸和像素密度类似设备通过缩放来达到同样的效果. (不解决不同屏幕尺寸的问题?) 2.的资 ...

  7. Linux的selinux

    SELinux 操作模式     学科 (Subject):SELinux 序,因此你能够将『主体』跟 process 划上等号:     目标 (Object): 主体程序是否能存取的『目标资源』一 ...

  8. NVCC编译器

    http://blog.csdn.net/bendanban/article/details/8518382 mark一下 几个方案可以用: 方案1: 将所有文件分别编译,最后统一合并! 对于C程序 ...

  9. MVC 如何在一个同步方法(非async)方法中等待async方法

    MVC 如何在一个同步方法(非async)方法中等待async方法 问题 首先,在ASP.NET MVC 环境下对async返回的Task执行Wait()会导致线程死锁.例: public Actio ...

  10. Elasticsearch教程

    Elasticsearch教程 摘要: 参考资料Elasticsearch中文参考文档思维导图阅读全文 posted @ 2015-08-05 11:49 xingoo 阅读(18) | 评论 (0) ...