Einzelnen Beitrag anzeigen

TheAn00bis

Registriert seit: 7. Jun 2004
386 Beiträge
 
#1

Isometrie: Welche Kachel wurde angeklickt?

  Alt 29. Mai 2007, 20:47
Hallo!

Ich arbeite im Moment an einem kleinen Spiel mit isometrischer Grafik bzw. an dem Framework.
Das Zeichnen von Sprites usw. funktioniert so weit, nur stehe ich jetzt seit einiger Zeit vor dem Problem, wie ich herausfinde, welches Tile angeklickt wird.

Siehe angehängte Grafik!

Die Welt wird größer als der Bildschirm sein, deshalb muss der Benutzer scrolen. Man kann sich das dann wie in meiner Grafik so vorstellen, dass der Bildschirm einen Ausschnitt der ganzen Welt darstellt. Dafür habe ich wirklich eine Klasse Screen geschrieben, die die Eigenschaften x und y hat, welche angeben, wo sich der Bildschirm gerade in der Welt befindet.
Ich bin jetzt auf der Suche nach einer Funktion, der ich die Mauskoordinaten übergebe, an denen geklickt wurde und die mir zurückgibt, welches Tile sich an dieser Position befindet.
Würde der Benutzer beispielsweise an der Stelle des grünen Punktes klicken, so sollte die Funktion "3;5" zurückgeben.

Meine Frage an euch ist jetzt: Wie ist das am einfachsten zu lösen?

Ich bin bisher folgendem Ansatz nachgegangen:

Ich bestimme eine Gerade durch den Punkt(+Screen.x bzw. y), die parallel zur isometrischen Achse ist (Steigung arctan(0,5) bzw. -arctan(0,5)) [in Grafik grün makiert] und berechne ihren Schnittpunkt mit der ganz linken bzw. ganz rechten Achse (orange makiert), dann dividere ich die Koordinaten durch die Seitenlänge.
Müsste theoretisch funktionieren, praktisch habe ich da bisher nur Müll raus, obwohl ich mich daran schon länger versuche.

Also, was würdet ihr vorschlagen, wie das am besten zu machen ist?

Ich hab das Gefühl, dass das eigentlich super einfach ist, ich einfach nur nicht die richtige Idee habe.
Miniaturansicht angehängter Grafiken
1_125.gif  
  Mit Zitat antworten Zitat