void LateUpdate()
{
if (tableCtrl != null)
{
// 移动时锁定位置
var screenPoint = RTCamera.CameraDict[RTCameraType.Exhibition].Camera.WorldToScreenPoint(tableCtrl.transform.TransformPoint(Vector3.down * 0.8f));
if (RectTransformUtility.ScreenPointToWorldPointInRectangle((RectTransform)this.transform, screenPoint, UIManager.Instance.UICamera, out Vector3 worldPoint))
{
transform.position = worldPoint;
}
// 缩放时同比缩放UI
// FOV(24-50)
// Scale(1-0.4)
var fov = RTCamera.CameraDict[RTCameraType.Exhibition].Camera.fieldOfView;
var rate = (fov - 24) / (50 - 24);
var scale = 1 - rate * (1 - 0.5f);
this.transform.localScale = Vector3.one * scale;
}
}
需要放到LateUpdate方法里面。
这段代码贴到UI代码里面。
RTCamera.CameraDict[RTCameraType.Exhibition].Camera 是当前摄像机
tableCtrl.transform 是3D模型的位置