Ich habe nach einer Formel gesucht, um isometrische Kacheln in einer rautenförmigen Welt zu zeichnen (Welt-> Bildschirm) und mit der Maus auszuwählen (Welt-> Bildschirm). Die, die ich immer versucht habe, scheinen gut weg zu sein. Was ist der übliche / richtige Weg, um dies zu tun?
23
Antworten:
Basierend auf Ihrem Kommentar ist hier der Code, den ich verwende, um Kachel-XY-Werte in Bildschirmkoordinaten umzuwandeln. Jetzt werden "3D-Kacheln" nicht berücksichtigt, alles wird als auf derselben Ebene liegend betrachtet. Wenn Sie also ein Spiel schreiben, bei dem es darauf ankommt, funktioniert dieser Code nicht.
point ist einfach eine Struktur mit x und y ints, TILE_WIDTH wäre in Ihrem Fall 64, TILE_DEPTH ist irgendwie falsch benannt (es ist tatsächlich die Höhe der Kachelgrafiken), aber es wäre in Ihrem Fall 32. Die Offsets lauten, wenn Ihre Kachelkarte an einer anderen x, y-Position "beginnen" soll (z. B. wenn sich die Kacheln über einer anderen Kachelgruppe befinden sollen). Typischerweise kann der Versatz 0,0 sein.
Dies erzeugt eine Karte mit 0,0 oben, in der Mitte, wie folgt:
Zum Finden der Kachel x, y des Cursors:
In diesem Codebit sind mX und mY die Koordinaten des Mausbildschirms, die wir mit den Kamerawerten kombinieren, um herauszufinden, wo wir uns in "Weltkoordinaten" befinden. Alles andere ist das gleiche wie im vorherigen Codebeispiel.
Dies setzt wiederum eine flache isometrische 2D-Kachelkarte voraus. Wenn Sie eine Halb-3D-Ansicht der Karte verwenden möchten, ist zusätzliche Arbeit erforderlich, und dies setzt voraus, dass Sie ohnehin in 2d arbeiten.
quelle