Wie man lerp zwischen 2 Z-Achsepunkten in Einheit lern und eine Komponente entsprechend skalieren

StackOverflow https://stackoverflow.com/questions/5324209

Frage

Ich arbeite mit Unity 3 und meine Gesamtgröße wird nur ein viereckiger Bereich mit einer Wand auf jeder Seite sein. Innerhalb davon werden zwei zusätzliche Wände sein, die ein Gehäuse schaffen, das den Spieler auf einen Teil des Levels beschränkt, der sich allmählich erweitert.

Ich nenne diese beiden Wände Zboundary und Xboundary und habe bisher für einen Prototyp ihre Bewegung auf einige Tastaturschlüsse abgebildet. Was ich tun möchte, ist, wenn sich einer bewegt, der andere in der Länge wächst, sodass sie immer in einem senkrechten Winkel verbunden sind, sodass ich in der Lage sein möchte, linear zwischen dem Z-Koordinaten des Zboundary und dem Z-Koordinaten von Z-Koordinate zu interpolieren. Die XBOUNDARY, damit sie immer einen Join treffen und einen Join erstellen. Dies schafft auch ein Problem, da ich nicht weiß, wie ich die Größe eines Gamecomponents programmatisch verändern und weiterhin Fehler bekommen kann.

Ich weiss Vector3.lerp Möge helfen, aber ich ertrinke in Transformationen und unterschiedlichen Skalen und würde die Hilfe so schätzen.

War es hilfreich?

Lösung

Ich bin auf halbem Weg dorthin, damit der Xboundary seine Position anpassen kann, um immer mit 90 Grad auf den Zboundary zu sperren

        ZBoundaryRef.transform.Translate((-1 * distancePerZMovement), 0, 0, Space.World);
        // using Space.World so transforms are using the global coordinate system!

        // what I've done here is say, move the XBoundary Z-CoOrd so that it aligns with the ZBoundary Z-CoOrd.
        // the origin of an object is at it's centre point so we need to take this in to account to ensure they join at the corners, not in a Tshape!
        float difference = (ZBoundaryRef.transform.position.x - XBoundaryRef.transform.position.x);
        float adjustment = difference + (ZBoundaryRef.transform.localScale.x/2);
        XBoundaryRef.transform.Translate(adjustment,0,0,Space.World);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top