博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
unity3d 血液
阅读量:6259 次
发布时间:2019-06-22

本文共 1551 字,大约阅读时间需要 5 分钟。

这里的人物头像和血条是在3d世界生成的,所以有真正的纵深感和遮挡关系,废话不多说,看我是怎么实现的。

第一步。先在UI Root里制作头像和血条。

这个制作步骤基本和我前面一篇文章介绍头像血条的制作步骤一致,以下我截个图。

就是上面的HeroPanel,东西非常easy,创建一个主面板HeroPanel。然后在里面创建一个Slider,用来显示血条,再创建一个sprite。用来显示头像,我这里另一个sprite是头像的背景框,然后调整位置和血条的颜色,不知道怎么做的看我前面的头像血条的文章,做完是这个样子:

第二步,把头像和血条做成prefab。

把上面制作的HeroPanel拖到Project的Resources目录下(Project->Assets->Resources)。没有Resources目录的自己创建一个,为了将来的载入。这样就生成了HeroPanel的prefab,然后就能够把之前UI Root下的那个删掉了。

第三步。进入程序。

上面的准备工作OK后,就是编程环节了。

我的每一个角色下挂了一个Npc脚本,在Npc脚本的Start里载入HeroPanel的prefab。

[csharp] 
  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] 
  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值。它是该百分比,在这里,我不引进。哈哈,磕踢。

你可能感兴趣的文章
iOS数据持久化存储之属性列表
查看>>
最后冲刺时间
查看>>
前端开发薪资之各地区对比(图文分析)
查看>>
jquery简单的大背景banner图片全屏切换
查看>>
java疑问
查看>>
JAVAEE 介绍
查看>>
视图和路由
查看>>
优酷新版播放器站外调用代码详解
查看>>
Python之操作符优先级
查看>>
【学习笔记】PHP会话控制
查看>>
面试题 17:合并两个排序的链表
查看>>
Linux命令--链接文件的那些事
查看>>
您对无法重新创建的表进行了更改或者启用了“阻止保存要求重新创建表的更改”选项...
查看>>
《梦断代码》读后感02
查看>>
java面试资料总结
查看>>
ubuntu 16.04 安装PhpMyAdmin
查看>>
c#中的常用ToString()方法总结
查看>>
ajax五,jsonp跨域的本质
查看>>
调用打印机打印
查看>>
poj1742
查看>>