Hallo,
ich habe ein paar Probleme bei der Programmierung eines Spiel. Es handlet sich im wesentlich um ein kleines Spiel mit Bällen und anderen Objekten die sich durch Kollision und Bewegung in ein Ziel Objekt bringen lassen.
Das Spiel funktioniert im Prinzip schon, jedoch habe ich einige Ausnahmefälle bei denen ich nicht weiterkomme.
Aufgebaut ist alles wie folgt.
Ich habe eine Funktion, die die Bewegung steuert und die Kollisionserkennung aufruft. Wenn es eine Kollision gibt wird der neue Vektor errechnet
Habe es eben nach diesem System probiert.
http://game-physics-engine.foren-city.de/topic,11,-kollisionen-mit-belieb-orient-flaechen.html
Vorher habe ich einfach zu meiner Oberfläche ein Lot gebildet und daran den Vektor gespiegelt. Leider gibt es bei einem Fall ein problem unzwar hier:
http://img716.imageshack.us/img716/8836/ballproblem.png
Der Vektor zeigt in den Balken hinein, und da er sich nicht dort hin bewegen kann, bleibt er stecken.
Meine Oberflächenerkennung arbeitet in diesem Fall nicht gut genug, mir fällt nur keine bessere Möglichkeit ein die Erkennung so allgemein wie möglich zu halten. Hat jemand eine Idee/Verbesserung?
EDIT: Was noch wichtig zu erwähnen ist, unzwar ist mein Objekt als Matrix gespeichert. Ein Punkt des Objektes ist dabei als 1 in der Quadratischen Matrix gespeichert. Wobei der Hintergrund als 0 gespeichert wird.
2. Hätte ich noch ein Problem ( was jedoch im Hintergrund steht ). Unzwar rollt mein Ball nicht wirklich. Er hüpft den Balken hinunter. Wie könnte man es machen, dass er runter rollt?
Momentan ist die Bewegung mir wie folgt aufgebaut, Bewegungsvektor = [3 2]
Er nimmt sich den höchsten wert (hier 3) und teil dann die Bewegung in Schritte ein
[3 2]/3*schritt = [1 2/3] = [2 4/3] = [3 2]
dann geht er von links nach rechts, solange bis es eine Kollision gibt.
Das ist natürlich nicht realistisch und eignet sich schon gar nicht für Rollbewegung. Wie löse ich das Problem
Ich hoffe ich konnte alles etwas verständlich machen
Grüße Gimper
Danke im voraus