2D Kollision
-
Hi @all!
Ich programmiere im Moment ein Spiel. Problem habe ich mit der Kollisionserkennung, da ich nicht jeden Schritt einzeln abfragen möchte.
Beide Objekte haben:
-XPosition
-YPosition
-Rotation (in Grad)
-XDrift (wie weit verschiebt sich das Raumschiff in einer Sek. auf der X-Achse)
-YDrift (wie weit verschiebt sich das Raumschiff in einer Sek. auf der Y-Achse)
-Breite
-Hoehe-Funktion Move(long lngTime)
Durch den ÜbergabeParameter lngTime wird der XDrift und der Y-Drift mit der Zeitdifferenz im Vergleich zum letzten Durchlauf umgerechnet. (also das sind die vergangenen Millisekungen)
Ich hatte nen Ansatz: Ich hab aus der Position und der Rotation eine Funktion berechnet und eine Kollisionsbox erstellt.
Diese Lösung gefällt mir nicht ganz. kennt jemand sich damit aus oder hat jemand ein Tutorial für mich?
Greez
HoloDoc
-
Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Rund um die Programmierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Dieser Thread wurde von Moderator/in kingruedi aus dem Forum Rund um die Programmierung in das Forum Spiele-/Grafikprogrammierung verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
HoloDoc schrieb:
Ich hatte nen Ansatz: Ich hab aus der Position und der Rotation eine Funktion berechnet und eine Kollisionsbox erstellt.
Was hast du daran auszusetzen?
-
Das Problem ist, dass in der Kollisionsbox nicht die Zeit inbegriffen ist. mit anderen Worten, wenn das Programm mal laggt, würde n die beiden Objekte kollisieren, obwohl der Schuss (das ist das zweite Objekt) normalerweise vorbeigeflogen wäre (hat ja ne viel höhere Geschwindigkeit)
-
deswegen berechnet man die logic und physic/collision meist mit fixen zeitschritten und interpoliert im beim rendern zwischen diesen.
-
okay und wie mach ich das?
Hab nu folgende datenObject 1:
X:500
Y:459
driftx:2000
drifty:-2000
breite:50Object2:
X:10
Y:700
driftx:9900
drifty:-5000Zeitdifferenz ist 0,1sek.