Есть ли способ транспортировки RectTransform в камеру ViewPort в unity3d?Есть ли способ транспортировки RectTransform в камеру ViewPort в unity3d?
Раньше я пытался сделать это несколько раз, но у него нет результата. Я хочу сделать видовое окно камеры точно в пределах надлежащего прямоугольного преобразования.
Существует мой код:
public static Rect RectTransformToCameraViewport(RectTransform rectTransform)
{
float leftDownCornerX = (rectTransform.anchoredPosition.x - rectTransform.sizeDelta.x/2);
float leftDownCornerY = (rectTransform.anchoredPosition.y - rectTransform.sizeDelta.y/2);
Vector3 leftCorner = new Vector3(leftDownCornerX, leftDownCornerY, 0);
Vector3 viewPortLeftCorner = new Vector3(leftCorner.x/Screen.width, leftCorner.y/Screen.height, 0);
float viewportWidth = Mathf.Abs(rectTransform.sizeDelta.x/Screen.width);
float viewportHeight = Mathf.Abs(rectTransform.sizeDelta.y/Screen.height);
return new Rect(0.5f + viewPortLeftCorner.x, 0.5f + viewPortLeftCorner.y, viewportWidth, viewportHeight);
}
Но, как я уже говорил, что не работает.
Edit 1:
Он работает, но он не работает на два дифф машин, где я работаю. Может быть, есть что-то с одним из этих исправлений.
Возможно, вы уже решили эту проблему?
какой тип камеры вы используете? это Орто или Перспектива? –
Я использую перспективную камеру –
, это невероятно сложно сделать. – Fattie