【UT】公告板实现

一、UI检测
因为所有UI都是通过BoxCollider+Ray的方式来触发业务逻辑,
所以Canvas的RenderMode是WorldSpace,EventCamera是专用的UICamera,
UICamera的Projection是Orthographic,注意ClippingPlanes的Near和Far的数值调整。

二、模型检测
模型也是BoxCollider+Ray来触发业务逻辑,
所以Projection是Perspective。

三、层级
ModelCamera的Depth是0,UICamera的Depth是1。


一、需求
在UI摄像机下显示特定格式的“公告板”,公告板初始化跟随特定模型,在摄像机移动时公告板仍然跟随模型。
ps:模型由ModelCamera显示,公告板由UICamera显示。

二、分析
之前的UI跟随物体,UI和模型都是在一个摄像机下,只需要WorldToScreen+偏移即可转换为UI的位置。现在是双摄像机,我们先用模型摄像机把模型位置转换为屏幕位置,再用UI摄像机把上一步骤转换的屏幕位置转换为世界位置即可(一、UI检测里说明了RenderMode为WorldSpace)。

三、实现

        Vector3 p = modelCamera.WorldToScreenPoint(modelPos);
        p = new Vector3(p.x, p.y, 10);
        billBoardPos = uiCamera.ScreenToWorldPoint(p);

上述代码为把模型位置转换为定点的公告板位置。
ps:循环赋值和模型摄像机移动时公告板仍然跟随的代码就不贴了,很简单。

你可能感兴趣的:(#,Unity,Tips)