naja ich habe jetzt keine Links die was mit der Bewegung einer Spielfigur auf 3D Terrain zu tun hat. Nur der ganze Kollisionskram.
Genau das meinte ich ja
...Kollisionen erkennen mit Bounding Boxen oder Spheren, Polygonschnitterkennungen mit Strahlen oder anderen Primitiven etc....prüfe ich ob zwischen den beiden Koordinaten eine Kollision stattgefunden hätte. ...berechne ich den Kollisionspunkt und verschiebe die Spielfigur an diese Stelle....selber noch keine Erfahrung gemacht um einschätzen zu können, ob diese Methode praktisch und wenig Rechenintensiv ist.
Dann haben wir ja ungefähr die gleichen Gedanken.
Erfahrung fehlt mir genauso, aber ich machs eben, wie es mir am besten erscheint.
Nur mal vereinfacht, dass die Spielfigur ein einzelner Punkt ist, denkt man sich eine Strecke von der Figur in die Bewegungsrichtung. Anfang Figur, Ende ist eben ein Punkt in der Richtung. Entfernung kann über die Geschwindigkeit ermittelt werden.
Wenn die Linie nirgends "durchbricht", alles ok, bewegen.
Wenn doch: Entfernung Spieler-Kollisionspunkt ermitteln und dorthin bewegen
Wenn mehrere Kollisionen: Die näheste zum Spieler.
Zum Kollisions-Überprüfen muss man alle Ebenen jedes Objekts durchgehen.
Optimieren kann man das Ganze schon einmal, in dem man alles "hinter" dem Spieler etc weglässt.
Oder nur das Achtel des Koordinatensystems überprüfen, in das er sich hinbewegt.
Oder...
Für alles bisherige lohnt es sich übrigens, eine gute Lektüre zur Vektorrechnung durchzunehmen.
Nicht nur das, was man in der Schule lernt, sondern mehr eben.
Da gibts ein paar nette Methoden, mit denen man sich viel umständliche Rechnerei erspart (und Performance gewinnt).
Was ich noch für sinnvoll halte: Nicht nur den Spielern und anderen beweglichen Sachen Boundingboxen verpassen, sondern auch der festen Welt: Und diese schachteln.
zB immer 4 Körper in eine BBox, dann immer 4 Boxen in eine BBox...bis nur noch eine Box übrigbleibt.
Das alles natürlich nicht ständig während der Laufzeit, sondern beim Laden etc.
Wenn man zuerst nicht weiß, wie die "Welt" aussehen wird:
Eine Möglichkeit wäre zB:
1) Ermitteln, wo die meisten unbearbeiteten Elemente sind.
zB den Durchschnitt aller Koordinaten als Punkt, und dort rundherum.
2) Mit dem Punkt als Mittelpunkt eine Box herumlegen.
Größe hängt zB ab, wie das Verhältnis zwischen Volumen und Anzahl der enthaltenen Elemente ist.
Hab da allerdings noch keine guten Erfahrungswerte dafür.
3) Die enthaltenen Elemente nimmst du aus der "Unbearbeitet"-Liste raus und fügst dazu die Box dazu.
Damit auch die Boxen wieder mitgeschachtelt werden können.
Gruß