Schiffskollisionen und Ränder
-
Hallo zusammen!!
Ich hab ein kleines Problem, bei meinem Versuch ein Spiel zu programmieren.
Es soll ein Weltraumrennspiel werden. dazu habe ich erstmal ein "Raumschiff" reingemappt. Bei Bewegungen bewegt sich der Hintergrund passend, das man das gefühl hat, das sich das Schiff bewegt.
Mein Problem....Kollisionen. Ich arbeite mit SDL und den Rects darin. Somit rechnet er ja immer in Rechtecken.
dabei hab ich das Problem, das, wenn man das Schiff dreht (wobei bei mir jeder Zustand des Schiffes in dem Bild hinterlegt ist) man größere schwarze Ecken hat, durch diese Drehung. Keymapping macht zwar die Farbe weg.Allerdings, wenn ein anderen Objekt diese Ecke streift, gibt meine Kollisionsüberprüfung ein "wahr", da das Bild gestriffen wurde.
Gibt es ein Weg, das zu umgehen, bzw. anders zu machen? Hoffe mir kann einer helfen!
Gruß
Barni
-
nutz kreise, dann ist dir rotation egal.
-
Auch wenn ich ein Kreis hätte...hätte ich ja einen radius, und somit auch schwarze bereiche, die eigentlich nichts sind.
Und die sind ja das problem.....das eine Kollision an einer Stelle ist, wo eigentlich keine Kollision ist. Sondern das Bild nur gestriffen wird......und vom Prinzip würde das auch beim kreis passieren?
Oder halt, ich hab grad nur Gedankenfehler^^
-
wenn du pixelgenau kollision willst, dann mach pixelgenaue kollision, wo liegt das problem?
-
Das Problem ist, das ich keine Ahnung habe, wie *gg*
Ich habe bis jetzt nur mit Rectfunktionen gearbeitet, die es da ja dann nicht bringen.
Wie muss ich denn ansetzen, um so etwas pixelgenau zu machen?
Wenn jemand so nett wäre, mir da aufzuhelfen.

-
wenn du das spiel nur für dich und/oder für paar deiner kumpels schreibst, nen einigermaßen schnellen pc hast und keinen wert (und bei dieser variante wirklich gar keinen wert) auf performance legst, dann machs per "brute force".
for(alle bilder, alle pixel) //nicht mit alle spiele alle tore zu verwechseln { ist ein pixel der bitmap a innerhalb der bitmap b..dann }die farben die du per colorkeying transparent machst lässt du einfach raus.
-
Also ich hab eigendlich noch keine wirklich nennenswerte Erfahrung in sachen Kolision.
Bin froh das ich mein Tetris endlich funktionierend zuende geproggt hab.(Auch wenn ich am Ende alles mehr oder weniger zusammengefrikkelt habe :p )Hier wie ich das Problem mit der Kollision versuchen würde zu lösen.
http://img252.imageshack.us/img252/6466/kollisionsx9.gif
Es ist zwar Auch noch ein Rechteck, aber dadurch, dass man es kleiner macht, wirkt eine Kollision zwischen 2 Raumschiffen dann nicht mehr so als würden sich ihre Schilde treffen und dadurch dann abstossen :P.
Wie Rapso gesagt hat könnte man ja auch Kreise benutzten. würde ich an deiner Stelle vielleicht versuchen. Kommt aber natürlich auf die Form des Raumschiffs an. Wenn es z.B. doppelt so lang, wie breit ist, dann macht das auch wenig sinn.