Jump to content
Unity Insider Forum

Cam an verschiedene mobile resolutions anpassen.


Cysar

Recommended Posts

Hey Leute!  

Ich arbeite momentan an einem mobile game und bin auf ein Problem gestoßen: 

Mein ganze game habe ich auf 16/9 angepasst und dementsprechend aufgebaut.
Nun ist mein spiel fast fertig und ich habe es auf verschiedenen android Handys gebuildet um mal zu schauen ob alles funktioniert und das tut es zum Glück auch.


Jedoch hab ich folgendes Problem: bei Handys die im Verhältnis höher sind wird seitlich etwas von der view weg geschnitten. 
Ist ja logisch aufgrund der anderen ratio und dem anderen Höhen und Breiten Verhältnis.
Da mobile Geräte aber ohnehin klein sind will ich nicht noch am Rand unnötigen Platz verschwenden in dem ich stellen frei lasse. 

Nun hatte ich zwei Ideen entweder abhängig von der resolution der cam mehr oder weniger Abstand zu geben oder am field of view etwas zu verändern.
Beide Lösungen haben circa das selbe Problem ich sehe nun, auch wenn minimal, mehr oder weniger in der Breite . 
Ich möchte jedoch genau das selbe in der Breite sehen und bei höheren Handys nur mehr in der Höhe sehen.

Fällt euch dazu eine simple Lösung ein?

Vielen Dank im Voraus!
 

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 3 Stunden schrieb Sascha:

Moin!

Bei URP kannst du bei der Kamera einfach die "Field of View Axis" auf "Horizontal" stellen und fertig.

Ich glaube, bei der Builtin Render Pipeline brauchst du ein bisschen Code. Vermutlich hilft dir da Camera.HorizontalToVerticalFieldOfView.

Moin Sascha! 

Vielen dank für die Antwort. 

Ich benutze leider die Builtin Render Pipeline.
Da das Unity Manual an der Stelle jedoch nicht wirklich detailliert ist, könntest du mir auf die Sprünge helfen und mir kurz erklären wir ich bei meiner perspective cam durch 
Camera.HorizontalToVerticalFieldOfView an die Lösung komme? 

Vielen Dank im Voraus! 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Unity hat ja einen FoV-Wert, der den von der vertikalen Achse der Kamera abgedeckten Bereich beschreibt. Wenn ich deine Beschreibung richtig verstanden habe, dann möchtest du stattdessen einen Winkel für die horizontale Achse definieren. Dafür gibt's mehrere Möglichkeiten. Diese hier wäre einfach nur, dass du mit dieser Methode den festgelegten horizontalen Winkel reinschmeißt, den Aspect Ratio der Kamera (also Breite durch Höhe des Bildes) dazu, und dann eben einen Winkel für die vertikale Achse kriegst.

Hab's nicht getestet, aber sowas in der Art:

camera.fieldOfView = camera.HorizontalToVerticalFieldOfView(60, camera.aspect);

Wobei man ja sowieso annehmen muss, dass die Methode intern nur eine Multiplikation macht :)

Die 60 ersetzt du jedenfalls durch einen beliebigen Wert, bei dem dir der Bildausschnitt gefällt. Ausführen kannst du das dann in Start().

Link zu diesem Kommentar
Auf anderen Seiten teilen

vor 18 Stunden schrieb Sascha:

Unity hat ja einen FoV-Wert, der den von der vertikalen Achse der Kamera abgedeckten Bereich beschreibt. Wenn ich deine Beschreibung richtig verstanden habe, dann möchtest du stattdessen einen Winkel für die horizontale Achse definieren. Dafür gibt's mehrere Möglichkeiten. Diese hier wäre einfach nur, dass du mit dieser Methode den festgelegten horizontalen Winkel reinschmeißt, den Aspect Ratio der Kamera (also Breite durch Höhe des Bildes) dazu, und dann eben einen Winkel für die vertikale Achse kriegst.

Hab's nicht getestet, aber sowas in der Art:

camera.fieldOfView = camera.HorizontalToVerticalFieldOfView(60, camera.aspect);

Wobei man ja sowieso annehmen muss, dass die Methode intern nur eine Multiplikation macht :)

Die 60 ersetzt du jedenfalls durch einen beliebigen Wert, bei dem dir der Bildausschnitt gefällt. Ausführen kannst du das dann in Start().

Moin Sascha! 

Danke für die Hilfe konnte damit das Problem beseitigen.

Beste Grüße!

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...