M
@rapso
Danke für die Antwort, aber wie ich mit Bit´s & Byte´s umzugehen habe weiß ich
schon seit, ähhh, vielen Jahren.
Hier gehts um eine vernünftige Positions-/Kolisionsabfrage die möglichst genau
ist und so gut wie Pixel getreu.
Fakt ist, das ich keine Zusätzliche Map brauche, ob Array oder Bitmap. Da die
begehbare Ebene Schwarz RGB(0,0,0) als Freiraum, bzw. frei beweglicher
Raum gildet, somit ist eine Kolisionsbitmap überflüssig.
Und ich brauche keine Submaps für jedes Map sondern nur für die, wo es angebracht
ist, also jene die ich mit Event-Tile beschimpfe. Dazu benötige ich aber auch nicht
wieder eine Map sondern nur Parameter und Routinen.
Ich will eine Spielebene von (Screen 640x480) 19.200 x 1.920 Pixel, Tiles sind
16x16, also Tiles-Array[X=1200][Y=120] (~140KB bei 256 Tiles), die Tiles-Bitmap
ist (True-Color) 192KB groß.
Nun bewegt sich die Spielfigur, bestehend aus 3(X) x 5(Y) Tiles nach rechts, das
Tile unten-rechts tritt mitt mind. einem Pixel das nächste Tile des Hintergrunds
und dieses ist ein Event-Tile, nun prüfe ich anhand von gegebenen Parametern
ob das ereignis des Event-tiles statt findet oder nicht.
Durch die Klasse der spielfigur weiß die Event-Routine das das mittlere Tile
der Spielfigur zuständig ist für z.B. den Abgrund, also wird nichts passieren
ausser das mittlere Tile befindet sich auf diesem Event-Tile, wenn das dann so
ist wird geprüft wie viele Pixel spielraum noch sind, bevor er stürtzt, ausser
er springt (Steuerung) etc.
Daher:
Wenn Tile != EventTile -> weiter
wenn Tile == EventTile -> Prüfe(Event Verarbeiten())
etc.
Also alles sogar einfach und Übersichtlich ohne zusätzliche Map´s oder so.
Erst auf Tile checken und dann ob Event, wenn ja inns Detail gehen.
gruß MiC++ha