Bild nur ohne ausgeblendete Farbe verwenden?

Anfängerfragen zum Programmieren mit PureBasic.
D4uS1
Beiträge: 268
Registriert: 02.09.2006 12:16

Bild nur ohne ausgeblendete Farbe verwenden?

Beitrag 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?
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
D4uS1
Beiträge: 268
Registriert: 02.09.2006 12:16

Beitrag von D4uS1 »

Dankeschön, ich werde den Ratschlag berücksichtigen und es lassen.
Benutzeravatar
AND51
Beiträge: 5220
Registriert: 01.10.2005 13:15

Beitrag von AND51 »

Wenn SpritePixelCollision() Lichtjahre schneller ist als SpriteCollision(), dann fresse ich einen Besen...
PB 4.30

Code: Alles auswählen

Macro Happy
 ;-)
EndMacro

Happy End
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag 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... ;)
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Antworten