Iso Feldposition ermitteln

Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Neue Antwort erstellen

 

bruce85

Betreff: Iso Feldposition ermitteln

BeitragSa, Nov 01, 2008 6:12
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
ich arbeite grad an einem Spiel in Isometrische darstellung und hab mal eine Funktion geschrieben, das die Feldpositionen per Maus anzeigt.
Vieleicht kanns ja der eine oder andere gebrauchen.

Hier erstmal die 2 Funktionen:
Überarbeitet
Code: [AUSKLAPPEN]
Function IsoX:Int(KarteX:Int,KarteY:Int,TileB:Int)
  Local m_x:Int = (MouseX()-KarteX)-(TileB/2)
  Local m_y:Int = (MouseY()-KarteY)
  Local m:Int = m_x+(m_y*2)
  Return (m / TileB)
End Function
Function IsoY:Int(KarteX:Int,KarteY:Int,TileB:Int,TileH:Int)
  Local m_x:Int = (MouseX()-KarteX)-(TileB/2)
  Local m_y:Int = (MouseY()-KarteY)
  Local m:Int = (m_x-(m_y*2))/2
  Return (m / TileH)-(m / TileH)*2
End Function


Als Rückgabewert wird die Feldposition zurückgegeben, wo sich die Maus gerade befindet.
Local feld_x = IsoX(400,200,64)
Local feld_y = IsoY(400,200,64,32)

Die erste Funktion erwartet 3 Parameter, 1. X-Position der Karte, 2. Y-Position der Karte und 3. Breite des Tiles (Höhe des Tiles wird nicht benötigt).

Bei der 2te Funktion wird Höhe des Tiles benötigt.

Wenn es eine bessere möglichkeit gibt, dann Postet sie doch mal Cool

MfG

Goodjee

BeitragSa, Apr 18, 2009 13:20
Antworten mit Zitat
Benutzer-Profile anzeigen
nich besser, aber anders:
Code: [AUSKLAPPEN]

'32x16 tiles, die ewrte kann man ja einfach ändern im code
Function mousemap:Float[]()
   Local mx#=MouseX()-camX
   Local my#=MouseY()-camY
   Local x#=(1.0/32.0)*mx+(1.0/16.0)*my
   Local y#=(2.0/16.0)*my-x
   Return [x,y]
End Function

'für die andere richtung, position->screenposition benutze ich folgende funkionen

Function isox:Float(x:Float,y:Float)
   Return (x-y) * 32.0 /2.0 +camX
End Function

Function isoy:Float(x:Float,y:Float)
   Return (x+y) * 16.0 /2.0 +camY
End Function

"Ideen sind keine Coladosen, man kann sie nicht recyclen"-Dr. House
http://deeebian.redio.de/ http://goodjee.redio.de/

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group