wie man physikalische Eigenschaften für einen Kreis einstellt, so dass er dem gegebenen Pfad folgt

8

Die Bewegung eines physikalischen Körperkreises ist zu unberechenbar für das, was ich erreichen möchte. Ich möchte es so einschränken, dass es einem bestimmten Pfad folgt, der bestimmte Punkte (oder eine Reihe von Punkten) berührt, wie in der Abbildung unten gezeigt. Wie kann ich festlegen, dass die physikalischen Eigenschaften einen ähnlichen Pfad durchlaufen?

    
NSSwift 02.09.2015, 12:15
quelle

2 Antworten

6
  

Wie man physikalische Eigenschaften für einen Kreis einstellt, so dass er dem angegebenen Pfad folgt

Sie möchten also einen Knoten mit Echtzeitbewegung an einen bestimmten Punkt bewegen. Ich habe eine Antwort hier , die zeigt, wie man das macht, aber angesichts der Anzahl der Stimmen, die diese Frage erhalten hat, werde ich zur Verfügung stellen eine detailliertere Antwort.

Was die Antwort, zu der ich verlinkt habe, nicht bietet, ist ein Pfad von Punkten zu durchlaufen. Im Folgenden habe ich eine Lösung zur Verfügung gestellt, die zeigt, wie dies im Folgenden geschehen kann. Es bewegt sich einfach zu jedem Punkt im Pfad, und jedes Mal, wenn der Knoten einen Punkt erreicht, erhöhen wir den Index, um zum nächsten Punkt zu gelangen. Ich fügte auch ein paar Variablen für Reisegeschwindigkeit, Rate (um die Bewegung glatter oder statisch zu machen) und ob der Knoten den Pfad wiederholen sollte. Sie können diese Lösung weiter ausbauen, um die Anforderungen Ihres Spiels besser zu erfüllen. Ich würde definitiv in Betracht ziehen, einen Knoten zu unterklassifizieren und dieses Verhalten aufzubauen, damit Sie diese Bewegung für mehrere Knoten wiederverwenden können.

Eine letzte Anmerkung, vielleicht bemerken Sie, dass die Berechnung für den Impuls zwischen meiner Lösung unten und der Antwort, die ich oben verlinkt habe, variiert. Dies liegt daran, dass ich die Verwendung der Winkelberechnung vermeide, da sie sehr teuer sind. Stattdessen berechne ich eine Normale, so dass die Berechnung recheneffizienter ist.

Eine letzte Anmerkung, meine Antwort hier erklärt die Verwendung des Geschwindigkeitsfaktors, um die Bewegung zu glätten und Raum für Bewegung zu lassen Verzerrungen.

%Vor%

Ich habe das ziemlich schnell gemacht, also entschuldige ich mich, wenn es einen Fehler gibt. Ich habe jetzt keine Zeit, aber ich werde ein gif hinzufügen, das die Lösung später zeigt.

Eine Anmerkung zu Kollisionen

Um die unregelmäßige Bewegung während einer Kollision zu beheben, nachdem die beiden Körper kollidieren, setzen Sie die "rate" -Eigenschaft auf 0 oder vorzugsweise eine sehr niedrige Zahl, um den Bewegungsgeschwindigkeitsimpuls zu reduzieren, der Ihnen mehr Spielraum für Bewegungsverzerrungen gibt. Dann, irgendwann in der Zukunft (vielleicht einige Zeit nach der Kollision oder vorzugsweise , wenn sich der Körper wieder langsam bewegt), setze die Rate auf ihren Anfangswert zurück. Wenn Sie wirklich einen schönen Effekt wünschen, können Sie den Wert der Rate im Laufe der Zeit von 0 bis zum Anfangswert erhöhen, um eine gleichmäßige und allmähliche Beschleunigung zu erzielen.

    
Epic Byte 02.09.2015, 17:54
quelle
1

Schnelle Implementierung mit FolgePfad: Dauer:

%Vor%

In GameViewController.swift habe ich die Standardmethode GameScene.unarchiveFromFile in let scene = GameScene(size: view.bounds.size) geändert, um die Größe der Szene zu erstellen.

Vorschau:

    
WangYudong 02.09.2015 13:29
quelle

Tags und Links