Kollisionserkennung per Alpha-channel - Direct3D
-
Hallo zusammen,
ich schreibe derzeit ein simples 2D Ballerspiel.
Für die Grafiken nutze ich normale Sprites mit einem Alphachannel.
Wenn nun diese Grafiken untereinander im Alpha-channel miteinander kollidieren, soll ein bestimmtes Ereignis ausgelöst werden.
Kann mir jemand einen Tipp oder Quelle geben, wie ich das mit ID3DXSprite Objekten umsetzen kann? Ich habe das auch schon mal in einem Buch gelesen, doch leider habe ich dieses nicht mehr zur Hand.
Für die Umsetzung benutze ich normales C++ und DirectX9.
Grüße
Fb
-
Hallo,
ich weiß nicht ob ich Dich richtig verstehe.
Ich habe mal einen Moorhuhn Clone entwickelt, ist es so ähnlich was du willst?
Und um die Abfrage, ob ich mit meiner mouse ein Ziel getroffen habe, hab ich eine Color-Picking routine verwendet. (Ja man könnte auch recs abfragen, aber das ist sehr ungenau.)Dazu habe ich vor jeder normalen renderschleife eine "unsichtbare renderschleife" rendern lassen, also ohne "PRESENT".
D.h. im Endeffekt hab ich alle hintergrund Grafiken schwarz gerendert Und alle Ziele in einem von mir festgelegten colorkey, das kann man mit einer aufsteigenden id sehr schön realisieren.
Dann habe ich bei jedem mouseklick den backbuffer gelockt und an der mouseposition habe ich den backbuffer ausgelesen und mir den farbcode ausgeben lassen.
Den hab ich dann wieder in eine ID umrechnen lassen und konnte somit eineindeutig die ID des vogels bestimmen, den ich getroffen habe, oder auch nicht.Dazu ist es allerdings notwendig weiße texturen, also masken der original grafik zu rendern.
Ob das jetzt die beste lösung ist weiß ich nicht, aber sie funktioniert.
Wenn du mehr wissen willst kannste mir gern ne Nachricht zukommen lassen.