世界坐标转屏幕坐标,
目的
UI层的物体能跟随3D世界的物体
应用场景
血条,聊天气泡,物体小提示
转换坐标
private Vector2 GetScreenPosition(Vector3 worldPosition)
{
Vector2 anchoredPosition = _camera.WorldToScreenPoint(worldPosition);
anchoredPosition *= CanvasHelper.RootCanvasSize.x / Screen.width;
float newWidth = anchoredPosition.x - CanvasHelper.RootCanvasSize.x * 0.5f;
float newHeight = anchoredPosition.y - CanvasHelper.RootCanvasSize.y * 0.5f;
return new Vector2(newWidth, newHeight);
}
在update里更新
public void OnUpdate()
{
if (_target != null && CharacterController.Instance != null)
{
rectTransform.anchoredPosition = GetScreenPosition(_target.position);
}
}