Frage

Für eine Universität fristiges Projekt, ich bin auf einer grafischen roguelike arbeiten (ich bin mir bewusst, der Widerspruch in sich: P), die eine isometrische Anzeige verwendet. Was ich versuche, herauszufinden, da alle die Fliesen zeichnen dummerweise teuer und unnötig ist, ich bin aus einem relativ schnellen Algorithmus zur Abbildung zu wollen, um zu bestimmen, welche Fliesen gezogen werden sollten, in einem NxMpx Fenster zu passen, da die Fliese Grafiken sind XxYpx.

Ich mache nicht glatt für das Scrollen, so dass das kein Problem. Ich bin auch nicht besorgt über perfekt zu sein - ein wenig unnötiges Unentschieden ist in Ordnung, ich will nur nicht eine riesige Menge von unnötigen Fliesen zeichnen, die nicht im Spiel auftauchen werden

.
War es hilfreich?

Lösung

Sie müssen sich über zwei Konzepte denken: Platz auf dem Bildschirm und Welt-Raum. Diese sind sehr wichtig in 3D-Motoren, aber sie gelten für alle, aber die einfachsten Spiele. In dem isometrischen Motor ist Ihr Welt-Raum ein 2D-Array von Fliesen.

So suchen Sie zunächst auf einem Weg zwischen diesen beiden Koordinatenräume verdeckte. Sobald Sie das getan haben, wird es offensichtlich sein, dass Platz auf dem Bildschirm Karten auf der Welt als rectange, die bei 45 Grad gedreht wird. Sie können eine Formel für die bestimmen, aber es ist nur wichtig, wenn Sie versuchen, zu sehen ist nur simulieren Monster, so dass Sie in diesem Bereich (ein Wirkungsgrad notwendig auf 8-Bit-Konsolen, welchen Teil des Weltraums zu bestimmen, die wahrscheinlich nicht auf einem modernen PC! ). Wenn es um die tatsächlichen Rendering kommt brauchen Sie nicht wirklich diesen sichtbaren Bereich der Welt zu bestimmen, weil es Ihnen die Fliesen auf dem Bildschirm machen in der Art und Weise implizit ist: -

  1. Sie arbeiten heraus, welche Fliese Lage ist an der oberen linken Ecke des Bildschirms, um dieses O nennen (zum Ursprung) - die eine von Ihrem Punkt von Interesse festen Offset sein wird, in der Regel der Spieler, dass Sie in halten wollen die Mitte des Bildschirms.
  2. Sobald Sie, dass Sie die Fliesen in der obersten Zeile des Bildschirms malen, Schritt + 1X und -1Y im Welt-Raum für jede Kachel (wenn Sie Nordosten suchen).
  3. Dann malen Sie die Zeile unten. Das versetzt minus einer halben Plattenbreite im Bildraum und beginnt bei O -1X im Welt-Raum.
  4. Sie wiederholen Sie die Schritte 2 und 3, die Ausgangsposition in der Weltraum Modifizieren von -1 in X und Y von dem, was Sie in der vorherigen Stufe 2 verwendet wird, bis Sie den oberen Rand des Bildschirms erreichen.

Weitere Tipps: -

  • Offensichtlich ziehen Sie keine Fliesen, die außerhalb der Karte sind. Sie können auch, je nach Spiel-Design, keine Fliesen außerhalb eines bestimmten Raum ziehen die Spieler in ist.
  • Es gibt nicht nur Bodenfliesen zu zeichnen, Theres auch Spieler, Monster, scenary, usw. Die Regel, die Sie alles in einer paricular Welt Lage im gleichen Durchgang ziehen ist. Auf diese Weise Objekte am nächsten an der ‚Kamera‘ Sachen hinter ihnen verbergen wird (weshalb Sie am oberen Rand des Bildschirms zeichnen beginnen).
  • Auch Sie haben nicht nur Bodenfliesen in den meisten iso-Motoren, würden Sie Möbel und Wand auch Segmente haben. Sie könnten Bereiche der Karte bezeichnen als zu einem bestimmten Raum gehört, wenn der Fokus auf diesem Raum ist (weil der Spieler in ihm beispielsweise), die Sie nicht die Wandsegmente für die Seite des Raumes ziehen am nächsten an die Kamera .

Wie auch immer, das reicht auf mit immer zu hoffen, es ist nützlich und Ihr Projekt geht gut.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top