2013-07-25 17 views

Odpowiedz

16

Odpowiedź na Twoje pytanie w dużej mierze zależy od sposobu wdrożenia gry. Jeśli utworzyłeś go przy użyciu tekstur GUI, zależy to w dużej mierze od tego, jak umieściłeś/dopasujesz obiekty do rozmiaru ekranu, co sprawia, że ​​jest to trochę trudne.

Jeśli większość Twojej gry jest wykonywana przy użyciu obiektów (takich jak płaszczyzny, sześciany, itp.), To są dwie metody, z których zwykle korzystam.

1) Pierwsza metoda jest bardzo łatwa do wdrożenia, ale nie zawsze wygląda zbyt dobrze. Możesz po prostu zmienić współczynnik kształtu kamery, aby dopasować ją do tego, na którym zaprojektowałeś swoją grę. Więc w twoim przypadku, ponieważ zaprojektowaliśmy grę na 4: 3, to zrobiłbym coś takiego:

Camera.aspect = 4f/3f; 

Jednakże, jeśli ktoś gra na ekranie oznaczało dla 16: 9, gra się skończy wyglądający na zniekształconego i rozciągniętego.

2) Druga metoda nie jest tak łatwa, wymaga sporo pracy i obliczeń, ale da o wiele bardziej przejrzysty wynik. Jeśli korzystasz z aparatu ortograficznego, należy pamiętać, że niezależnie od rozdzielczości ekranu kamera ortogonalna utrzymuje wysokość na określonej wysokości i zmienia tylko szerokość. Na przykład w aparacie ortograficznym o rozmiarze 10 wysokość zostanie ustawiona na 2. Mając to na uwadze, należy zrekompensować najszerszą możliwą kamerę na każdym poziomie (na przykład mieć szerokie tło) lub dynamicznie zmieniaj rozmiar ortograficzny kamery, dopóki jej szerokość nie zostanie dopasowana do tego, co utworzyłeś.

Jeśli zrobiłeś 3D gra z kamery stereoskopowej, rozdzielczość ekranu nie powinna wpływać naprawdę jak to wygląda, ale myślę, że zależy od gry, więc więcej informacji byłyby wymagane

+0

Robię grę używając przedmiotów (sześciany, kule). Ta gra to gra 2D wykonana w świecie Unity 3D. – Zwiebel

+0

jeśli jest to 2D, musisz użyć kamery ortograficznej, więc po prostu podążaj za wskazówkami, które mi dała. –

9

The Way I nie jest zmiana kamery rzutnię zgodnie z proporcjami urządzenia Rozważmy dokonane grę dla 800x1280

lista Możesz to zrobić w dowolnym skrypcie

float xFactor = Screen.width/800f; 
float yFactor = Screen.height/1280f; 


Camera.main.rect=new Rect(0,0,1,xFactor/yFactor); 

i to działa jak magiczna

+1

Faceci, to jest trochę buggy, nie polecam używania odpowiedzi @Nelson Austria, – Rohit

1

Łatwo to zrobić, biorąc pod uwagę cel, tzn. Jeśli grasz w Iphone 5, proporcje to 9:16 v lub 16: 9 h.

public float targetRatio = 9f/16f; //The aspect ratio you did for the game. 
void Start() 
{ 
    Camera cam = GetComponent<Camera>(); 
    cam.aspect = targetRatio; 
} 
-1

Najlepszym rozwiązaniem dla mnie jest użycie twierdzenie przecinających się linii, tak że nie ma ani odcięcia na bokach ani zniekształcenie widoku gry. Oznacza to, że musisz przejść do tyłu lub do przodu w zależności od różnych współczynników proporcji.

Jeśli chcesz, mam an asset on the Unity asset store, który automatycznie koryguje odległość kamery, dzięki czemu nigdy nie będziesz mieć zniekształceń ani obrażeń bez względu na to, z jakiego urządzenia przenośnego korzystasz.

1

Oto mój skrypt do skalowania rzutowanie prostokątne aparatu w grach 2D

public float screenHeight = 1920f; 
public float screenWidth = 1080f; 
public float targetAspect = 9f/16f; 
public float orthographicSize; 
private Camera mainCamera; 

// Use this for initialization 
void Start() { 

    // Initialize variables 
    mainCamera = Camera.main; 
    orthographicSize = mainCamera.orthographicSize; 

    // Calculating ortographic width 
    float orthoWidth = orthographicSize/screenHeight * screenWidth; 
    // Setting aspect ration 
    orthoWidth = orthoWidth/(targetAspect/mainCamera.aspect); 
    // Setting Size 
    Camera.main.orthographicSize = (orthoWidth/Screen.width * Screen.height); 
} 
Powiązane problemy