见过NGUI实现的,但是UI的摄像机与场景摄像机不是一个摄像机,就会造成当角色被树木等建筑物拦住时血条仍会显示、当然由于镜头的拉远拉近血条大小不变等问题。
下面用Unity的API实现并渲染一个血条,先上最终结果图
准备工作:一张血条图片,上下左右都会有黑色像素来做为血条的边框,新建一个材质球,绑定到此图片,Shader选择为 Unlit/Texture
新建空物体,加入如图所示的组件:
运行即见效,主要的原理是这个Hp_bar这个脚本里面。
主要的原理还是很简单的:
首先确定血条上的10个顶点位置,以下列序号和位置分布:
0,1,2,3,4
5,6,7,8,9
三角形的连接是 015 516 126 以此类推,顺时针连接。
UV分布0到1(5到6)为血条的最左面,可以理解为九宫格的左边,1到2(6到7)为九宫格的中间区,2到3(7到8)为九宫格的右区间,3到4(8到9)为黑色边框。
地址: https://github.com/pingzi1066/HPBar
后续建议 :)
假如有做摄像机移动动画的话,血条应该面向摄像机,这个是问题(或许可以用Unity粒子的方式解决)。当然没有动画的话,可以在一开始就设置好旋转。