Erstellen einer benutzerdefinierten Kollisionskarte für 2D

7

Ich habe eine 2D-Ebene, die ich in meinem Karteneditor erstellt habe, und ich habe mich gefragt, wie ich am besten eine Kollisionskarte dafür erstellen kann.

Ich habe eine Kollisionskartenebene in meinem Karteneditor, die jeden Knoten speichert (zum Beispiel wäre ein Rechteck nur 0,0 0,50 50,60 0,60).

Ich habe mich nur gefragt, wie ich meine Knotenpositionen in eine Kollisionskarte für Unity konvertieren kann.

Vielen Dank! Ich denke, das muss möglich sein, ich kann mir vorstellen, wie ich es in Flash machen würde ... aber ich bin mir nicht sicher, wie ich es in Unity manipulieren soll.

BILD BEARBEITEN: Ich habe also an jedem dieser roten Punkte einen Knoten (um mein Gelände herum, sagen wir mal). Ich möchte aus diesen Knoten einen Collider erstellen

Knoten-Kollisionskarte

Bitbitbot
quelle
Ich habe herausgefunden, wie es in Flash und XNA geht ... ist es überhaupt in UnityPro möglich? (Ich habe grundlegende), aber dies scheint eine grundlegende Aufgabe für die Erstellung bestimmter Spiele zu sein ...
Bitbitbot
Check out gamedev.stackexchange.com/questions/33484/…
Mikael Högström
1
... und um ganz klar zu sein, es geht darum, zwischen zwei Eckpunkten zu interpolieren und den Höhenwert zu überprüfen. Ich denke, Sie sollten dies überprüfen.
Mikael Högström
Danke Mikael, ich nehme an, ich könnte einfach meine eigene Kollision rollen, nicht zu 100%, was ich möchte, aber ich denke, es ist vielleicht die beste Lösung, um zu sehen, ob jemand eine bessere Idee hat, wenn nicht, werde ich mit Interpolation gehen
Bitbitbot
Weitere Antworten auf Unity-spezifische Fragen finden Sie unter Unity Answers .
Darcara

Antworten:

2

Ich dachte, da diese Art von Fragen ab und zu auftauchen, würde ich mich etwas ausführlicher erklären.

Angenommen, Sie haben eine 2D-Ebene aus einer Höhenkarte wie im Bild ohne "überhängende" Geometrie:

Wir wollen überprüfen, ob Punkt p unter der Linie liegt. In diesem Fall haben wir eine Kollision bei l_p. Um dies zu erreichen, interpolieren wir die Werte v1.Y und v2.Y, um die Höhe der Linie bei pX zu überprüfen. Wenn dieses l_p.Y größer als pY ist, liegt eine Kollision vor.

  • Überprüfen Sie zunächst, ob v1.X <= pX <v2.X ist
  • Berechnen Sie den Interpolationsbetrag (a), dh wie viel Teil von v1.Y bzw. v2.Y verwendet werden soll, wenn a = (pX - v1.X) / (v2.X - v1.X)
  • Berechnen Sie das interpolierte Y mit y = (1-a) * v1.Y + a * v2.Y.
  • Wenn y> = pY, liegt eine Kollision vor
  • Lösen Sie bei Bedarf die Durchdringung, indem Sie pY = y setzen
  • WICHTIG: Wenn Sie an dieser Stelle einen Impuls auf den Körper ausüben, stellen Sie sicher, dass tatsächlich eine Schließgeschwindigkeit vorliegt, dh, dass in diesem Fall eine Geschwindigkeit nach unten zeigt. Andernfalls wird im nächsten Frame möglicherweise eine weitere Kollision gemeldet, die den Körper wieder nach unten schickt.

Überprüfen Sie, ob Punkt p unter der Linie v1-v2 liegt

Mikael Högström
quelle