私は現在、これは私のことができます。1.回転オブジェクトは、中回転を停止さ/境界
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;
}
下90度を超えないように条件を別のオブジェクトの周りにオブジェクトを回転させると設定するには、次のロジックを使用する限界を破ります条件が当てられたときの方向。
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);
}
}
次のような関数が、更新メソッドで呼び出されます。
void Update() {
RotateCannonMouse();
RotationBounds();
}
私の質問/問題は、私が遅い/中速でオブジェクトを回転移動させる場合の条件がヒットし、それは私が期待してないことです。オブジェクトを速く回転させると、条件を突破して回転を乱します。誰かがこの問題を前にしていたのですか?私はおそらくupdateメソッドが十分に速く反復していないか、オブジェクトをすばやく回転させて境界の値をスキップしていると思っていましたか?高度な
を見つけた解決策は今、これはそれdoesntの多くより読みに見えるのですか?あなたはそれが真実か間違っていても同じことをしません。チェックを外して計算を終了してください。実際に計算された値でcalcAngleをすぐに初期化することができます... – yes