haben Sie eine Hand der Uhr, die der Spieler einmal anfängt zu drehen (Ziehen) CCW, bis er eine volle Umdrehung beendet. (Ohne den Widerstand zu heben)Beschränkung der Drehrichtung in Echtzeit
Ich versuche die Rotation nur in CCW-Richtung zu sperren, während/sobald der Spieler anfängt zu rotieren. Ich habe Hilfe von den folgenden Links: [Detect Richtung] [1] durch @ BobBobson108
Hier ist gif von dem, was tatsächlich passiert: Demo
void OnMouseDrag()
{
//rotation
Vector3 mousePos = Input.mousePosition;
mousePos.z = 5.23f;
Vector3 objectPos = Camera.main.WorldToScreenPoint(transform.position);
mousePos.x = mousePos.x - objectPos.x;
mousePos.y = mousePos.y - objectPos.y;
angle = Mathf.Atan2(mousePos.y, mousePos.x) * Mathf.Rad2Deg;
transform.rotation = Quaternion.Euler(new Vector3(0, 0, angle - 90f));
hand_vector = transform.up;
cross_product = Vector3.Cross(ref_vector, hand_vector);
dot_product = Vector3.Dot(cross_product, transform.forward*-1);
//Debug.Log("Hand Vector: " + hand_vector);
//Debug.Log("Ref Vector: " + ref_vector);
Debug.Log(cross_product);
Debug.Log(dot_product);
}
Ich habe versucht, die Werte des Kreuzprodukts zu debuggen, aber die Richtung des resultierenden Vektors scheint dieselbe zu sein, selbst wenn der Spieler die Rückwärtsdrehung beginnt.
Auch der Kreuzproduktvektor ändert die Richtung nur dann, wenn der Spieler die Drehung in CW-Richtung von der Standardposition startet, d. H. 12 Uhr.
Ich habe sehr wenig Erfahrung im Umgang mit Quaternions und Rotationen. Jede Hilfe wird sehr hilfreich sein. Vielen Dank !!!
Ich habe es versucht. Es ist die gleiche Sache, die mich blockiert, die Richtung des Winkels zwischen den zwei Vektoren VERRINGERT. Das Vorzeichen ändert sich nur, wenn Sie die Drehung in CW von der Ref-Position, d. H. 12 Uhr, starten. – UnixNoob
Hier ist ein Snapshot des Debug Logs http://s3.postimg.org/87vpcgpgz/Untitled.png – UnixNoob
Verwenden Sie den richtigen Vorwärts-/Aufwärtsvektor? Sie können versuchen, sie mit der Debug.DrawLine-Funktion zu visualisieren und zu sehen, ob alles in Ordnung ist. – radonthetyrant