Iso Tiles
Übersicht

![]() |
AbrexxesBetreff: Iso Tiles |
![]() Antworten mit Zitat ![]() |
---|---|---|
Kleines Sample von Farbfinsternis (bmax) zum Thema Iso-Tiles. Blitzbasic übersetzung von mir.
http://www.abrexxes.huntingsof...tz/iso.zip Have Fun. cu |
||
![]() |
Farbfinsternis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du hast da was falsch kommentiert:
"m.bmp" dient als Dummy-Mauszeiger um ein zweites Bild für "ImagesCollide()" zu haben. Halbtransparent ist Frame 1 aus "it.bmp" und das auch nur um etwas besser zu sehen wo man gerade ein Tile hinsetzt. In der BMax Version mache ich noch ein "SetColor(255,0,0)" um das "Edit-Tile" auch über bestehenden Tiles zu sehen. |
||
Farbfinsternis.tv |
![]() |
Abrexxes |
![]() Antworten mit Zitat ![]() |
---|---|---|
Naja guck auf die Uhr, das war eine 180 Sekunden Arbeit. Inzwischen ist das Teil schon in den unendlichen Tiefen meiner Ordner ersoffen. Da ja deine Korrektur hier steht erspare ich mir jetzt den Rest. Es geht ja eh mehr um den Aufbau als darum eine Vorlage für einen Editor zu liefern.
cu |
||
![]() |
Farbfinsternis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich weiß ganz allgemein nicht ob mein Source hier richtig aufgehoben ist. Es fehlt jegliche Grundlage um die Map zu scrollen oder zumindest Fullscreen darzustellen. Bei diesen Punkten bin ich selbst noch am forschen, die Artikel auf gamedev.net taugen leider nichts. | ||
Farbfinsternis.tv |
![]() |
Abrexxes |
![]() Antworten mit Zitat ![]() |
---|---|---|
Fette Links zum Thema ISO. Danke an mvBarracuda : http://www.fifengine.de/
History: http://trac.bookofhook.com/boo...evelopment LinkList Mainpage : http://www-cs-students.stanfor...eprog.html Hexagon : http://www-cs-students.stanfor...g.html#hex Have Fun ! |
||
![]() |
Farbfinsternis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Abrexxes hat den Kram leider von seinem Server geschmissen. Da es aber doch noch Interesse an dem Thema zu geben scheint, hier nochmal das Archiv von meinem Server, leider ohne die Additions von Abrexxes:
http://www.colorflow.de/pub/download/isotest.zip |
||
Farbfinsternis.tv |
![]() |
Firstdeathmaker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mal ne Frage, weshalb macht ihr überhaupt eine Kollisionsabfrage per Imagescollide? Das ist doch Rechenzeitintensiv? Um zu schauen wo die Maus in Isokoordinaten ist, braucht ihr doch nur die Formel die für´s Einzeichnen verwendet wird umzustellen?
(Nicht komplett lauffähig) Code: [AUSKLAPPEN] Rem
by Firstdeathmaker 2008 www.blitzforum.de Mit SetupTileSize kann man die Tilegröße einstellen. Oft: 64*32 Pixel oder 32*16 oder so etwas. Mit Getx0 und Gety0 bekommt man die Koordinaten auf der Tilemap (abhängig von Bildschirmkoordinaten), nützlich für das feststellen der Mausposition z.B. Mit Getx und Gety bekommt man kartesische Bildschirmkoordinaten (die normalen 2D Koordinaten der BMax Befehle) End Rem Type TIsoMap Global fieldsize:Float[2]' size of the tiles in the game (x0,x1), is also the size of the tiles Field dim:Int[]'Dimensions of field Field array:TIsoMapField[,] Field offset:Float[2] Method Init(x0:Int,x1:Int) Self.array = New TMapfield[x0,x1] Self.dim = array.Dimensions() For Local x0i:Int = 0 To x0-1 For Local x1i:Int = 0 To x1-1 Self.array[x0i,x1i] = New TIsoMapField Self.array[x0i,x1i].Init(x0i,x1i) Next Next End Method Method Getx0:Float(x:Float,y:Float) x = (Self.offset[0]-x) y = (Self.offset[1]-y) Return (x/fieldsize[0]-y/fieldsize[1]) End Method Method Getx1:Float(x:Float,y:Float) x = (Self.offset[0]-x) y = (Self.offset[1]-y) Return ((-x/fieldsize[0])-(y/fieldsize[1])) End Method Method Getx:Float(x0:Float,x1:Float) Return (x1 - x0)*fieldsize[0]/2.0 + Self.offset[0] End Method Method Gety:Float(x0:Float,x1:Float,x2:Float) Return (x1 + x0)*fieldsize[1]/2.0 - x2*fieldsize[2] + Self.offset[1] End Method Method SetOffset(x0:Float,x1:Float) Self.offset[0] = x0 Self.offset[1] = x1 End Method Method MoveOffset(x0:Float,x1:Float) Self.offset[0]:+x0 Self.offset[1]:+x1 End Method Method SetUpTileSize(x0:Int,x1:Int)'Maybe 64*32? (for tiles width=64, height=32) Self.fieldsize[0] = x0 Self.fieldsize[1] = x1 End Method Method Draw() 'Ecken des Bildschirms bestimmen Local x0max:Int = GetX0(0,GFX_Y)+1 Local x0min:Int = GetX0(GFX_X,0) Local x1max:Int = GetX1(GFX_X,GFX_Y)+1 Local x1min:Int = GetX1(0,0) If x0min<0 x0min=0 If x0max<0 x0max=0 If x1min<0 x1min=0 If x1max<0 x1max=0 If x0min>dim[0]-1 x0min=dim[0]-1 If x0max>dim[0]-1 x0max=dim[0]-1 If x1min>dim[1]-1 x1min=dim[1]-1 If x1max>dim[1]-1 x1max=dim[1]-1 For Local x1i:Int = x1min To x1max For Local x0i:Int = x0min To x0max Self.array[x0i,x1i].Draw(GetX(x0i,x1i),GetY(x0i,x1i)) '<- Übergibt kartesische x und y Koordinaten zum einzeichnen. Next Next ?Debug DrawText "Mapsize: "+dim[0]+"/"+dim[1],10,22 ? End Method End Type |
||
www.illusion-games.de
Space War 3 | Space Race | Galaxy on Fire | Razoon Gewinner des BCC #57 User posted image |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group