Transparenter Baum zwischen Fadenkreuz und Zielobjekt

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
Benutzeravatar
Delle
Beiträge: 1132
Registriert: 10.05.2005 22:48

Transparenter Baum zwischen Fadenkreuz und Zielobjekt

Beitrag 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
PB 6.21 | Win 11
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8812
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Re: Tansparenter Baum zwischen Fadenkreuz und Zielobjekt

Beitrag 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.
Benutzeravatar
Delle
Beiträge: 1132
Registriert: 10.05.2005 22:48

Re: Tansparenter Baum zwischen Fadenkreuz und Zielobjekt

Beitrag von Delle »

Aber PB checkt dann schon, dass es beim transparenten Bereich vom Baum ein "Treffer" ist und dahinter nicht oder?
PB 6.21 | Win 11
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Re: Transparenter Baum zwischen Fadenkreuz und Zielobjekt

Beitrag 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.
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
Delle
Beiträge: 1132
Registriert: 10.05.2005 22:48

Re: Transparenter Baum zwischen Fadenkreuz und Zielobjekt

Beitrag 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.
PB 6.21 | Win 11
Antworten