2015-04-17 4 views
0

У меня есть квадрат спрайт (ширина == высота), и я хочу масштабировать его так, чтобы ширина и высота составляли ровно одну пятую ширины экрана.Unity 2D - масштаб спрайта в соответствии с шириной экрана

Чтобы найти нужную ширину пикселя я:

float desiredWidthPixels = Screen.width * 0.2f; 
float desiredHeightPixels = Screen.width * 0.2f; 

Как применить эти значения для спрайта?

+0

Если вы хотите получить более точное значение, я бы предложил вам использовать удвоения поплавка. Что касается вашего вопроса, посмотрите [этот документ] (http://michaelcummings.net/mathoms/creating-2d-animated-sprites-using-unity-4.3). – CalebB

+0

спасибо, но моя проблема не в создании анимации спрайтов, мне просто нужно знать, как применять эти значения к спрайту, чтобы он изменялся до требуемой ширины/высоты (мне нужно сделать это из скрипта) –

+0

Я принимаю это тогда не читал статью? – CalebB

ответ

1

Это зависит от того, была ли ваша камера орфографической или нет.

Вам нужно будет масштабировать объект вверх или вниз, в зависимости от его первоначального размера.

float cameraHeight = Camera.main.orthographicSize * 2; 
float cameraWidth = cameraHeight * Screen.width/Screen.height; // cameraHeight * aspect ratio 

gameObject.transform.localScale = Vector3.one * cameraHeight/5.0f; 

код идет в файл сценария, прикрепленного к GameObject (в вашем случае спрайтов) с геймобжекты означает Game Object он включен. Если вы делаете это из другого файла сценария, вам нужно будет сначала найти объект в дереве перед его масштабированием.

+0

спасибо, я попробовал ваше решение, и вот что происходит: спрайт теперь выглядит тем же самым на все экраны, хотя его ширина равна ширине всего экрана, а не только одной пятой. Любая идея, почему это происходит? Кроме того, моя камера орфографическая –

+1

Я думаю, что это зависит от исходного размера вашего спрайта. вы можете поиграть с 5.0f - например, 25.0f – cocojiambo

Смежные вопросы