Ich mache ein 2D-Spiel mit xna / monogame. Ich möchte, dass im Hauptansichtsbereich immer 15 x 15 Kacheln oder 480 x 480 Pixel angezeigt werden.
Ich habe etwas, das funktioniert, wenn ich dieser Anleitung folge . Es erweitert den Ansichtsbereich, wenn Sie das Fenster verkleinern. Es funktioniert jedoch etwas richtig, wenn Sie es erweitern. Es funktioniert wie vorgesehen, wenn das Fenster maximiert ist.
Ich möchte, dass der Bereich des gerenderten Objekts unabhängig von der Fenstergröße nicht größer als 480 x 480 Pixel ist, aber ich möchte, dass die Sprites größer erscheinen, wenn die Fensterauflösung größer eingestellt wird (und umgekehrt).
Antworten:
Ich habe kürzlich so etwas in der MonoGame.Extended- Bibliothek implementiert . Das Erstellen eines Letterbox / Pillarbox-Ansichtsfensters in MonoGame ist eigentlich etwas schwierig. Ich werde mein Bestes geben, um hier eine gute Antwort zu geben.
Es gibt im Grunde 3 Teile. Die erste besteht darin, eine Skalierungsmatrix zu erstellen, die an den
SpriteBatch.Begin
Anruf weitergeleitet wird. Die Variablen repräsentieren Ihre tatsächliche Auflösung im Vergleich zur virtuellen Auflösung . Sie codieren das Spiel beispielsweise mit einer virtuellen Auflösung von 800 x 480, rendern es jedoch mit einer tatsächlichen Auflösung von 1024 x 768. Dieser Code streckt das Bild passend.Der zweite Teil ist, wie Sie den Briefkasten- / Säulenbox-Effekt erhalten. Es ändert die Größe des Ansichtsfensters auf
GraphicsDevice
und zentriert das Bild. Dieser Code muss jedes Mal ausgeführt werden, wenn sich die Bildschirmgröße oder Fenstergröße des Geräts ändert. Zum Beispiel für denWindow.ClientSizeChanged
Fall.Der letzte Teil befasst sich mit Eingabekoordinaten über die Maus oder den Touchscreen. Da Sie die Grafiken skaliert und verschoben haben, müssen Sie für die Eingabekoordinaten das Gegenteil tun. In diesem Fall so etwas
Ich habe ein vollständiges Tutorial mit all diesen Dingen in Klassen auf meinem Blog .
quelle
Artikel werden im Stack-Austausch im Allgemeinen nicht gemocht, aber dies ist mein Blog-Beitrag, wenn ich versuche, mich daran zu erinnern
http://www.david-amador.com/2010/03/xna-2d-independent-resolution-rendering/
quelle
articles generally are not liked
denn wenn die Seite ausfällt, ist die Antwort nutzlos. Wie wäre es, wenn Sie die relevanten Teile Ihres Artikels in Ihrer Antwort zitieren?