Meine Lösung wäre, jede physische Entität in der Spielkarte als Baumknoten und die Karte selbst als Wurzelknoten zu behandeln . Knoten können andere Knoten enthalten. Jeder Knoten ist (direkt oder indirekt) innerhalb des Kartenknotens enthalten.
Angenommen, Ihr Charakter steht auf einer Plattform. Der Knoten der Plattform enthält den Knoten des Charakters. Wenn sich die Plattform also bewegt, bewegen sich auch die darin enthaltenen Knoten (in diesem Fall der Charakter).
Zu diesem Zweck sollte jeder Knoten eine (x, y) -Position relativ zum übergeordneten Knoten haben . Zum Beispiel könnte sich Ihr Charakter bei (1,0) relativ zur Plattform befinden, was sich selbst bei (10,10) relativ zur Spielkarte befinden könnte. Auf diese Weise bewegt sich Ihr Charakter implizit, wenn sich die Plattform bewegt.
In diesem hierarchischen Baum ist die Position jedes Knotens gleich der Summe seiner Position plus der Positionen aller übergeordneten Knoten. Angenommen, wir möchten die Position des Charakters auf der Karte ermitteln. Wir berechnen:
(Position des Charakters) + (Position des Elternknotens) + (Position des Wurzelknotens) = (1,0) + (10,10) + (0,0) = (11,0)
OK, die ganze Zeit stand dein Charakter auf der Plattform. Was ist mit Springen? Nun, in dem Moment, in dem er springt, lösen Sie ihn von der Plattform und befestigen ihn an dem Knoten, der die Plattform enthält . in diesem Fall die Karte (Wurzelknoten).
Wenn er wieder landet, befestigen Sie ihn an dem Knoten, auf dem er gelandet ist.