ImagesOverlap Frage

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

mpreu

Betreff: ImagesOverlap Frage

BeitragMo, Aug 26, 2013 12:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Befehl ist ja klar, aber wie ist es wenn ich in einer for...next schleife das eine bild mehrmals zeichne bspw. für einen level als tile.
Dann kann ich ja schlecht einfach nur bild1 gegen bild2 einfach so prüfen.

bild1 wäre in dem fall der spieler.
müsste ich sozusagen jedesmal beim zeichnen des gesammten levels in der hauptschleife gegen den spieler auf kollision prüfen, oder?

oder bei einem breakout clone, da dort ja auch die steine mehrmals gezeichnet werden.
dort würde es noch per arrays gehen, aber bei einem level ala mario stell ich mir das schwierig vor.

Tennisball

BeitragMo, Aug 26, 2013 13:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

Bei einem Level wie bei Mario ist im Prinzip nix anders als bei Breakout - Bei beiden Spielen sind die Tiles in einer Tilemap angeordnet. Du übergibst auch nur die Identität eines Bildes an ImagesOverlap, damit dieses die Breite und Höhe dessen auslesen kann, denn das Überlappen zweier Bilder (Recktecke) lässt sich rein mathematisch berechnen. Also kannst du es wie mit dem Zeichnen handhaben - Für jedes Tile überprüfst du mit ImagesOverlap, ob es mit dem Spieler kollidiert. Du übergibst einfach jedesmal TileImage, TileX, TileY sowie PlayerImage, PlayerX, PlayerY.

Ich hoffe das hilft.

Gruß,
Tennisball
 

Kruemelator

BeitragMo, Aug 26, 2013 15:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du deine Spielwelt in einem Array ablegst (hast du bestimmt wenn du mit Tiles arbeitest), dann kann man einfach optimieren indem man einfach nur die Bilder in der nähe prüft. Bestimmte die Spielerposition in dem Array und prüfe dann nur die umliegenden Tiles.
Beispiel:
BlitzBasic: [AUSKLAPPEN]
tilemap(100,100)
tilebreite = 20
tilehoehe = 20

spielerpositionx = 325
spielerpositiony = 623

posx = spielerpositionx/tilebreite
posy = spielerpositiony/tilehoehe

;geht nur die 3x3 tiles durch die dem spieler am nächstens sind, muss angepasst werdenw enn speiler größer als ein tile ist
For y=posy-1 To posy+1
For x=posx-1 To posx+1
;hier testest du mit: tilemap(x,y)
Next
Next

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group