Ich habe mit dem Bewegen von geneigten Kacheln in XNA herumgespielt und es funktioniert halb, ist aber nicht ganz zufriedenstellend. Ich habe auch gedacht, dass Sätze von vorgegebenen Hängen mir möglicherweise kein Terrain geben, das "organisch" genug aussieht. Es besteht auch das Problem, dass für jede Neigung mehrere verschiedene Fliesentypen konstruiert werden müssen, wenn sie miteinander verkettet sind (nur 45-Grad-Fliesen werden nach meinem Verständnis perfekt verkettet).
Ich hatte daran gedacht, nach verbundenen Ketten von geneigten Fliesen zu suchen und sie als neues großes Dreieck zu behandeln, da ich Probleme hatte, an den Rändern, an denen sich geneigte Fliesen verbinden, Störungen zu verursachen. Dies führt jedoch zurück zu dem Problem der Begrenzung der Krümmung des Geländes.
Also ... ich möchte jetzt ein einfaches Bild oder eine Textur des Geländes eines Levels (oder eines Abschnitts des Levels) erstellen und eine einfache Höhenkarte (der Ys für jedes X) für das Terrain erstellen. Die Y-Position des Spielers wird dann nur basierend auf seiner X-Position aktualisiert.
Gibt es eine einfache Möglichkeit, dies zu tun (oder eine bessere Möglichkeit, dieses Problem zu lösen)? Das Hauptproblem, das ich bei dieser Methode sehen kann, ist der Fall, in dem sich Bereiche über dem Boden befinden, auf denen man laufen kann. Vielleicht gibt es eine Möglichkeit, einfach alle begehbaren Bodenbereiche abzubilden?
Ich habe mir diesen hilfreichen Code angesehen: http://thirdpartyninjas.com/blog/2010/07/28/sloped-platform-collision/, aber ich brauche eine Möglichkeit, die tatsächlichen Punkte / Vektoren zu generieren.
BEARBEITEN: Ich habe versucht, geneigte Pfade mithilfe des von mir geposteten Links vorab zu generieren, aber jetzt bin ich überzeugt, dass ich die von Ihnen vorgeschlagene Kollision pro Pixel verwenden sollte. Ich habe mir das Beispiel unter http://create.msdn.com/en-US/education/catalog/tutorial/collision_2d_perpixel angesehen und versuche herauszufinden, wie das Sprite angepasst werden kann, sobald eine Kollision erkannt wurde. Wie David vorgeschlagen hat, habe ich einige Sensorpunkte (Füße, Seiten, untere Mitte usw.) erstellt und kann leicht erkennen, wann diese Punkte tatsächlich mit nicht transparenten Teilen einer zweiten Textur kollidieren (einfache Neigung). Ich habe Probleme mit dem Algorithmus, wie ich die Sprite-Position basierend auf einer Kollision anpassen würde.
Angenommen, ich erkenne eine Kollision mit der Neigung am rechten Fuß des Sprites. Wie kann ich die Hangtexturdaten scannen, um die Y-Position zu finden, um den Fuß des Sprites so zu platzieren, dass er sich nicht mehr innerhalb des Hang befindet? Die Art und Weise, wie es im Beispiel als 1D-Array gespeichert wird, ist etwas verwirrend. Sollte ich versuchen, die Daten stattdessen als 2D-Array zu speichern?
Mir ist auch aufgefallen, dass einige Leute erwähnen, dass es am besten ist, Kollisionsprüfungen horizontal und vertikal zu trennen. Warum ist das genau so?