Ich versuche ein Spin-Rad zu machen, das in 6 Abschnitte unterteilt ist. Jeder Abschnitt ist mit einem gameObject markiert, das in diesem Bereich zentriert ist. Nachdem der Spieler das Rad gedreht hat, dreht es sich, bis es anfängt zu stoppen und dann bewegt sich das Rad und stoppt in der Mitte basierend auf dem ausgewählten Abschnitt (Zufällig). Ich habe den folgenden Code verwendet, um das Rad in Richtung 0 auf der X-Achse zu drehen. Dieser Code funktioniert gut und das Rad dreht sich gut, aber nur, wenn der ausgewählte Abschnitt auf der positiven X-Achse war.Drehrichtung einstellen Unity C#
float rotateFloat = (((randomReward + 1) * 60) - 30) - transform.rotation.z;
Quaternion targetRotation = Quaternion.Euler(new Vector3(0, 0, rotateFloat));
transform.rotation = Quaternion.RotateTowards(transform.rotation, targetRotation, f_difX * Time.deltaTime);
Ich habe einige graben und fand, dass Quaternion.RotateTowards()
den nächsten Weg zum Ziel findet und dreht sich diese Richtung mit (dies ein Problem mit der Drehrichtung verursacht).
Beispiel (Bild folgen): Der Spieler wischt und randomReward (Nummer 5 am Spin-Rad) und das Rad beginnt zu drehen. Wenn das Rad langsamer wird, bewegt es sich in Richtung der Mitte. Dann hört es auf, sich entlang der Wischrichtung zu drehen und dreht sich zur anderen Seite hin (Weil der Abstand zur Mitte näher an der linken Seite ist).
Wie kann ich es so einstellen, dass es der gleichen Wischrichtung folgt, unabhängig davon, welcher Punkt näher an der Mitte ist. Und vielleicht, wenn es einen besseren Weg gibt, dies zu tun, bitte erleuchte mich. Vielen Dank.
Diese Art von was tat ich eigentlich. Aber anstatt die 'Swipe-Zeit' zu verwenden, habe ich f_difX verwendet, das ist im Grunde der Punkt, wo der Spieler seine Linke Finger vom Bildschirm - der Punkt, an dem er den Bildschirm berührte, bevor er wischte. Mir gefällt die Idee, die Spinnzeit mit der Wischzeit zu verbinden. Ist es möglich, diese Idee zu vertiefen? Oder wie man eine Funktion so macht? Danke für die Antwort :) –