Seite 1 von 1

Transparenter Baum zwischen Fadenkreuz und Zielobjekt

Verfasst: 15.07.2010 02:01
von Delle
Hallo,

habe ein kleines Problem bei einem Moorhuhn-Clone:

Repeat
- Hintergrund wird gezeichnet
- hintere Zielobjekte werden gezeichnet
- transparenter Baum wird gezeichnet
- vordere Zielobjekte werden gezeichnet
- Fadenkreuz wird gezeichnet
Until ...

Nun findet eine Überprüfung mittels SpritePixelCollision() zwischen dem Fadenkreuz und den Zielobjekten statt.

Problem: Zielobjekte hinter dem Baum werden bei Kollision mit dem Fadenkreuz auch als Treffer gewertet.

Das soll natürlich nur passieren wenn diese tatsächlich getroffen werden, also auch sichtbar sind.

Hat jemand ne Idee wie man das elegant lösen kann?

Danke,
Delle

Re: Tansparenter Baum zwischen Fadenkreuz und Zielobjekt

Verfasst: 15.07.2010 02:19
von NicTheQuick
Wenn dir die Kollisionsüberprüfung sagt, dass ein hinteres Objekt getroffen wurde, musst du nur nochmal prüfen, ob auch eine Kollision mit dem Baum stattfand. Ist dies der Fall, wurde das hintere Objekt eben doch nicht getroffen.

Re: Tansparenter Baum zwischen Fadenkreuz und Zielobjekt

Verfasst: 15.07.2010 13:21
von Delle
Aber PB checkt dann schon, dass es beim transparenten Bereich vom Baum ein "Treffer" ist und dahinter nicht oder?

Re: Transparenter Baum zwischen Fadenkreuz und Zielobjekt

Verfasst: 15.07.2010 13:48
von bobobo
kommt auf die Art der Kollisionsprüfung und die Art (Größe , Form) der transparenten Baumbereiche an
und auf die Größe des Projektils , denk ich mal ..
wenn Dein Baum aus einem hohlen Kreis bestünde, dann kannst Du da mit einem genügen kleinen
Projektil da durchschiessen SpritePixelCollision() und ein Dahinterfliegendes Moorhuhn (oder was auch immer)
abballern .. oder eben auch nicht bei Benutzung von SpriteCollision(), dann geht nix durch den Bereich des
BaumSprites (rechteckig !!) durch.

Re: Transparenter Baum zwischen Fadenkreuz und Zielobjekt

Verfasst: 15.07.2010 23:30
von Delle
Also das wäre jetzt grob meine Idee: Erst grob prüfen ob Fadenkreuz überhaupt Feind berührt, wenn ja dann nochmal prüfen ob der Baum dazwischen ist.

Code: Alles auswählen

If SpriteCollision(#Sprite_Fadenkreuz,MouseX(),MouseY(),#Sprite_Feind,Feinde()\x,Feinde()\y) And MouseButton(1)
     
       If SpritePixelCollision(#Sprite_Fadenkreuz,MouseX(),MouseY(),#Sprite_Baum,MouseX(),MouseY())=0
           
           DeleteElement(Feinde())
       
       EndIf
     
EndIf
Funktioniert natürlich nicht ;) Ich weiß jetzt auch nicht ob das #Sprite_Baum,MouseX(),MouseY() so richtig ist.