Iso Feldposition ermitteln
Übersicht

bruce85Betreff: Iso Feldposition ermitteln |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() MfG |
||
![]() |
Goodjee |
![]() Antworten mit Zitat ![]() |
---|---|---|
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/ |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group