Ich schreibe ein Spiel in Java, bei dem ein Fahrrad eine Straße entlang fährt. Ich beabsichtige, einige Hindernisse auf der Straße hinzuzufügen, die Strukturen mit einer Neigung sind, die der Biker überwinden muss. Mit anderen Worten, das Fahrrad muss klettern und den Hang entlang laufen, wenn es auf eines trifft, so dass es offensichtlich genau auf den Hangweg ausgerichtet sein muss. Ich mache dies derzeit mithilfe von Triggerfunktionen, um den Drehwinkel, die xy-Koordinaten für das Fahrrad beim Steigen, Sinken usw. zu ermitteln. Kann jemand bitte einen besseren Algorithmus vorschlagen, um dies zu erreichen?
7
Antworten:
Ich glaube nicht, dass Sie den Trigger wirklich vermeiden können, aber Sie können nur verbessern, wie Sie den Winkel berechnen.
In Ihrer Frage werden die "xy-Koordinaten für das Fahrrad" erwähnt, aber tatsächlich hat das Fahrrad keine einzige Koordinate. Es hat zwei Koordinaten - die zwei Räder.
Insbesondere sollten Sie sich nicht auf die Position des Fahrrads und einen einzelnen Punkt stützen. Wenn Sie nur einen einzigen festen Punkt verwenden (wie in der Mitte des Fahrrads), funktioniert dies nicht, wenn das Fahrrad zum ersten Mal in eine Steigung fährt. Das Vorderrad des Fahrrads kippt erst, wenn der Mittelpunkt die Steigung erreicht.
Hier ist ein Bild davon, wie es aussehen wird, wenn Sie von der Mitte aus rechnen und einfach eine Steigung eingeben ...
Berechnen Sie stattdessen die Drehung basierend darauf, wo die Vorder- und Hinterräder den Boden berühren. Berechnen Sie Y am Hinterrad, dann Y am Vorderrad und dann den Winkel zwischen den beiden Punkten. Dann können Sie dafür sorgen, dass es auf unebenem Boden funktioniert, und die Bewegung wird viel glaubwürdiger und sieht so aus ...
Auf diese Weise können Sie auch kleinere Unebenheiten gut handhaben. Basierend auf der Neigung von Rad zu Rad muss das Vorderrad Ihres Fahrrads tatsächlich über die Unebenheit fahren, auf der anderen Seite herunterkommen und das Hinterrad darüber fahren. Wenn Sie anhand eines Punktes (Mitte des Fahrrads) rechnen, erhalten Sie Folgendes ...
Wenn Sie jedoch anhand der Fahrradräder rechnen, erhalten Sie Folgendes ...
quelle
So würde ich es auch mehr oder weniger machen. Eine Sache, die Sie versuchen können, ist, dass die Bodenstücke einen normalen Vektor enthalten, den Sie schnell abfragen können, um das Fahrrad am Hang auszurichten.
Die Vektornormalisierung wird meistens verwendet, wenn der Vektor eine Länge von 1 haben soll. Eine andere Verwendung ist, wenn der Vektor eine bestimmte Länge haben soll, den Vektor zu normalisieren, der garantiert, dass der Vektor eine Länge von 1 hat, und dann mit dem zu multiplizieren Nummer, die Sie möchten, ist die Länge.
quelle