Iso Mausberechnung für die Tiles?
Übersicht

blackmasterBetreff: Iso Mausberechnung für die Tiles? |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
ich versuche gerade die Mausberechnung hinzubekommen für die Tiles, ich habe das mal so versucht: Code: [AUSKLAPPEN] For y=0 To 39
For x=0 To 39 DrawImage tile,(x-y)*32-scroll_x,(x+y)*16-scroll_y,Spielfeld(x,y) If MouseX() > (x-y)*32-scroll_x And MouseX() < (x-y)*32-scroll_x+32 Then If MouseY() > (x+y)*16-scroll_y And MouseY() < (x+y)*16-scroll_y+16 Then feld_x = x : feld_y = y EndIf EndIf Next Next If MouseHit(1) And MouseDown(1) Then DrawImage tile,feld_x*32,feld_y*32,frames EndIf wenn ich mit der Maus auf irgendeine position klicke, dann wird dieser Tile ganz wo anders gezeichnet. Die Tiles sind 64*80 gross. Wie kann ich eine genaue berechnung durchführen? Danke schonmal. MfG |
||
![]() |
Puccini |
![]() Antworten mit Zitat ![]() |
---|---|---|
was sol ldieses x-y und x+y immer??
das kannst du doch weglassen?? ![]() also so: mousex()>x*32 and mousex()<(x+1)*32 and mousey()>y*32 and mousey()<(y+1)*32 oder so in der art... |
||
-=Achtung=-
Suche Hobby-Modelliere der hin und wieder bock hat ein kleines Objekt zu erstellen. Bei Interesse PM www.ragesoft.de Passwortmanager: http://ragesoft.de/index.php?o...;Itemid=39 |
![]() |
Firstdeathmaker |
![]() Antworten mit Zitat ![]() |
---|---|---|
So:
Code: [AUSKLAPPEN] Const GFX_X% = 800
Zitat:Const GFX_Y% = 600 Const TILEWIDTH# = 32 Const TILEHEIGHT# = 16 Graphics GFX_X,GFX_Y,32,2 SetBuffer BackBuffer() Local MAP_OFFSET[1];Zum scrollen z.B. MAP_OFFSET[0] = GFX_X/2 MAP_OFFSET[1] = GFX_Y/2 Repeat Cls Color 255,255,255 For i0 = 0 To 10 For i1 = 0 To 10 Rect XReal(i0,i1)+MAP_OFFSET[0],YReal(i0,i1)+MAP_OFFSET[1],10,10 Next Next Local mx% = MouseX() - MAP_OFFSET[0] Local my% = MouseY() - MAP_OFFSET[1] Local miso_x% = XIso(mx,my) Local miso_y% = YIso(mx,my) Color 255,0,0 Rect XReal(miso_x,miso_y)+MAP_OFFSET[0],YReal(miso_x,miso_y)+MAP_OFFSET[1],10,10 Text 10,10, XIso(mx,my)+" "+YIso(mx,my) Flip Until KeyHit(1) End Function XReal(xiso,yiso) Return (xiso-yiso) * TILEWIDTH / 2.0 End Function Function YReal(xiso,yiso) Return (xiso+yiso) * TILEHEIGHT / 2.0 End Function Function XIso(xreal,yreal) Return (xreal/TILEWIDTH) + (yreal/TILEHEIGHT) End Function Function YIso(xreal,yreal) Return (yreal/TILEHEIGHT) - (xreal/TILEWIDTH) End Function xreal = (xiso-yiso) * tilewidth/2.0
yreal = (xiso+yiso) * tileheight/2.0 Daraus folgt: (2 * xreal) / tilewidth = xiso - yiso (2 * yreal) / tileheight = xiso + yiso woraus folgt: xiso = (xreal/tilewidth) + (yreal/tileheight) yiso = (yreal/tileheight) - (xreal/tilewidth) |
||
blackmaster |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@Firstdeathmaker danke dir, aber ich habe es anders gelöst, stimmt zwar nicht 100%, aber man kann es lassen.
@Puccini das x-y und x+y ist wichtig, da ich meine Map in Isometrie darstellen möchte, hier ein beispiel: http://www.tonypa.pri.ee/tbw/tut18.html Jetzt noch eine Frage und zwar, wie kann ich meine Spielfigur in der Isometrische Map bewegen lassen? Wenn die Spielfigur nach unten bewegt werden soll, dann muss der wert von SpielerX verringert und SpielerY erhöt werden, wenn ich das so mache: Code: [AUSKLAPPEN] SpielerX = SpielerX - 1
SpielerY = SpielerY + 1 das wird so nicht gehen, da die Spielfigur start nach unten bewegt werden muss und leicht nach links. Wie kann ich das am einfachsten lösen? [EDIT] Habe das jetzt so gemacht: Code: [AUSKLAPPEN] SpielerX = SpielerX - 2
SpielerY = SpielerY + 1 funktioniert sehr gut und danke für die antworten. MfG |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group