需求:
实现角色的血条和大地图中显示掉血文本显示(飘血的位置不跟随产生对象运动)。
解决方案:
1、2d血条作为属性放置到3d对象身上。(2d血条的父节点是3d对象)。飘血文字的父节点是3d地图载体。
2、另外制作一个不需摄像机就能展示的Canvas,将血条和飘字的放置到该Canvas中。
方案实现分析:
方案1实现分析:
如果实现2d血条作为3d对象的属性,则该血条需要使用Canvas(Render Mode: WorldSpeace)作为载体,并且需要渲染摄像机。当前项目中只使用了一个透视摄像机(近大远小),如果使用该摄像机会出现2d血条UI的实际效果并不是真实效果(近大远小),并且会跟随着角色进行旋转效果。
如果再添加一个正交相机呢?
1、 再添加一个正交相机的话,因为角色移动并且之前的透视相机是跟着角色同步的,那么并且需要再次处理当前正交相机与角色同步。
2、 在添加一个相机, 需要再次渲染所有的需要显示的内容。
3、 并且需要调整该相机与透视相机的投影出来的可视区域一样。
方案二实现分析:
使用方案二,需要新建一个不需摄像机的Canvas(RenderMode: Screen Space - Overlay)。
血条需要从对象的世界坐标转化为屏幕坐标(需要放置在Update里面),因为需要保持与角色同步。
飘血文字同理放置,但是需要实现飘血文字在大地图上效果,需要在Update里面处理,
当摄像机移动的过程中,计算每一帧的偏移量,然后让所有的飘血效果反向运动即可。
总结:从性能,与简介性相比。采用方案二更合适。