I derzeit folgende Logik verwenden, um ein Objekt um ein anderes Objekt zu drehen, und der Bedingungen nicht mehr als 90 Grad überschreiten oder unter 1.rotierenden Objekt bricht Einschränkungen/Bounds
protected void RotationBounds(){
bRotateDown = true;
bRotateUp = true;
if (_CannonTube.transform.rotation.eulerAngles.z >= 90)
bRotateUp = false;
if (_CannonTube.transform.rotation.eulerAngles.z <= 1)
bRotateDown = false;
}
Dies ermöglicht es mir, die die Drehung zu stoppen, in eine Richtung, sobald die Bedingung getroffen wird. Ich setze dann die Drehung mit den folgenden Mausbewegungssteuerungen ein:
protected void RotateCannonMouse(){
if (Input.GetKey ("mouse 0")) {
if (Input.GetAxis ("Mouse Y") > 0 && bRotateUp == true && bRotateDown == true
|| Input.GetAxis ("Mouse Y") > 0 && bRotateUp == false && bRotateDown == true) {
transform.RotateAround (_SphereBase.position, -transform.forward,
Input.GetAxis ("Mouse Y") * 15);
}
if (Input.GetAxis ("Mouse Y") < 0 && bRotateUp == true && bRotateDown == true
|| Input.GetAxis ("Mouse Y") < 0 && bRotateUp == true && bRotateDown == false) {
transform.RotateAround (_SphereBase.position, -transform.forward,
Input.GetAxis ("Mouse Y") * 15);
}
}
Die folgenden functons werden dann in der Update-Methode aufgerufen.
void Update() {
RotateCannonMouse();
RotationBounds();
}
Meine Frage/Problem ist, dass, wenn ich in einem langsamen/mittlerer Geschwindigkeit das Objekt bewegen drehen sich die Bedingungen getroffen und es tut, wie ich erwartet. Wenn ich das Objekt schnell rotiere, wird es die Bedingungen durchbrechen und die Drehung durcheinander bringen. Ist jemand schon einmal auf dieses Problem gestoßen? Ich dachte, dass die Update-Methode nicht schnell genug iteriert oder dass ich das Objekt so schnell rotiere, dass es die Grenzen überschreitet?
Vielen Dank im fortgeschrittenen
jetzt fanden diese es viel besser lesbar tun aussehen? Sie brauchen nicht die 3. Wenn es aber das gleiche macht, egal ob es wahr oder falsch ist. Entfernen Sie einfach den Scheck und verlassen Sie die Berechnung. Eigentlich könnte man calcAngle einfach mit dem berechneten Wert initialisieren ... – yes