Исправление левой стороны камеры в 2D-игре при всех разрешениях экрана

#c# #unity3d #2d

#c# #unity3d #2d

Вопрос:

Я только начал создавать 2D-игру с использованием Unity, и у меня проблема с разрешением и камерой. У меня есть 2D-ландшафт, и я пытаюсь привязать левую сторону камеры к левой стороне ландшафта. Однако, когда я меняю разрешение экрана, например, на iphone 4, левая сторона скрыта. Я попробовал этот скрипт для камеры, но он не работает :

 void Awake()
{        
    Ray ray = Camera.main.ScreenPointToRay(new Vector3(Screen.width/ 2, Screen.height / 2,-10));
    Camera.main.orthographicSize = ray.origin.y;
    transform.position = new Vector3 (ray.origin.x, ray.origin.y,-10);  
}
 

Ответ №1:

Вы хотите использовать Camera.pixelRect (также см. Camera.pixelWidth и Camera.pixelHeight ).

Вы находите точку мира, расположенную в центре экрана в мировых координатах, меняете размер видового экрана камеры на основе этого, а затем устанавливаете положение камеры обратно в центр экрана. Если вы хотите привязать левый край видового экрана, скажем, к x = 0 (при условии, что левый край вашей местности равен x = 0), вы должны найти xMax видового экрана, преобразовать его из экранных координат в мировые координаты и установить положение камеры x на это.

 void Awake()
{   
    // Set the camera's orthographic size.
    // The camera's pixelWidth, pixelHeight, and pixelRect is relative to it.
    Vector3 worldCenter = Camera.main.ScreenToWorldPoint (new Vector3 (Screen.width / 2, Screen.height / 2, -10));
    Camera.main.orthographicSize = worldCenter.y;

    // Get the viewport's rectangle and calculate the camera's desired position.
    // We want to use viewportRect.xMax since we want to move the camera to the right by half of the view width.
    Rect viewportRect = Camera.main.pixelRect;
    Vector3 cameraPosition = new Vector3 (viewportRect.xMax, 0, 0);
    cameraPosition = Camera.main.ScreenToWorldPoint (cameraPosition);
    cameraPosition.z = -10;
    transform.position = cameraPosition;
}
 

Некоторые ссылки:

http://docs.unity3d.com/ScriptReference/Camera.html

http://docs.unity3d.com/ScriptReference/Camera-orthographicSize.html

http://forum.unity3d.com/threads/screen-width-vs-camera-pixelwidth.136703/