Seite 1 von 1

Bild nur ohne ausgeblendete Farbe verwenden?

Verfasst: 22.01.2007 12:10
von D4uS1
In vielen Spielen, wie z.B. Mohrhuhn oder Sonstiges, wird anhand der Umrisse der Bilder gesagt wo die Einschussmöglichkeiten liegen. In dem PB Einstiegstoturium wird das ganze mit folgender logischen Zeile Erklärt:

Code: Alles auswählen

if MouseX() > ZielX and MouseX() < ZielX + 100 and MausY() > ZielY and MausY() < ZielY + 100
Punkte = Punkte +1
endif
Der einzige Nachteil hierbei ist, das das ganze Bild als Ziel erkannt wird und nicht nur die Angezeigte Fläche, die zuvor mit TransparentSpriteColor() ausgeblendet wurde. Wie kann ich es schaffen das die ausgeblendete Farbe gleichzeitig auch keine Möglichkeit der "Umsetzung" bieted und sozusagen gar nicht beachted wird?

Verfasst: 22.01.2007 12:53
von Kaeru Gaman
> In vielen Spielen, wie z.B. Mohrhuhn oder Sonstiges, wird anhand der Umrisse der Bilder gesagt wo die Einschussmöglichkeiten liegen.

wie kommst du darauf?
ich würde drauf wetten, dass die wenigsten games nach pixeln gehen.


natürlich gibt es diese möglichkeit in PB, aber davon rate ich dir ausdrücklich ab,
weil es der absolute performance-fresser schlechthin ist,
und außerdem für die meisten games unnötig.


die lösung für die koordinaten-kollision wie in dem Tutorial ist eigentlich die beste und schnellste.

du kannst den bereich kleiner machen,
kannst mit nem Bounding-Circle arbeiten (umkreis)
kannst für ein objekt mehr als einen prüfbereich testen,
aber du wirst mit einem koordinaten check immer Lichtjahre schneller sein, als mit einer Pixelkollision!

http://www.purebasic.fr/german/viewtopic.php?t=9093

Verfasst: 22.01.2007 16:08
von D4uS1
Dankeschön, ich werde den Ratschlag berücksichtigen und es lassen.

Verfasst: 22.01.2007 16:19
von AND51
Wenn SpritePixelCollision() Lichtjahre schneller ist als SpriteCollision(), dann fresse ich einen Besen...

Verfasst: 22.01.2007 18:03
von Kaeru Gaman
Kaeru Gaman hat geschrieben:aber du wirst mit einem koordinaten check immer Lichtjahre schneller sein, als mit einer Pixelkollision!
AND51 hat geschrieben:Wenn SpritePixelCollision() Lichtjahre schneller ist als SpriteCollision(), dann fresse ich einen Besen...
wenn du schon postest ohne zu denken, solltest du wenigstens nicht posten ohne zu lesen... ;)