在开发项目中,可能会有制作血条的功能,或者制作三维场景中人物头上的状态栏或者信息栏的功能需求。
效果:
Flood.gif
其实主要就是UGUI物体跟随三维世界的物体坐标的实现。然后将血条信息或者其他的信息数据赋值。
知识点:
1、就是三维世界与UGUI的坐标转换
Uunity提供了很方便的API:RectTransformUtility(RectTransform的辅助类)
a、这个功能主要用到了ScreenPointToWorldPointInRectangle;
解释:
bool ScreenPointToWorldPointInRectangle(RectTransform rect, Vector2 screenPoint, Camera cam, out Vector3 worldPoint),把屏幕坐标转换成在rect这个实参平面内的世界坐标,这个函数可能会比较难搞懂一些,可以理解为在屏幕坐标ScrrenPoint处发条Z方向的射线,摄像与rect的交点就是返回的世界坐标worldPoin。(这里的rect就传自身的RectTransform,screenPoint就是屏幕坐标,其实就是把screenPoint投射在Canvas平面上得到rect的世界坐标点)
b、还有另外一个接口和它类似:ScreenPointToLocalPointInRectangle
解释:bool ScreenPointToLocalPointInRectangle(RectTransform rect, Vector