#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/