x および y 方向へのプレーヤーのタッチに基づいて、3d モデルを回転させたいと考えています。そのため、水平および垂直のタッチを検出しています。
しかし、これではz方向の回転を制限したい。このために、私は複数のコードを試し、他のフォーラムでも提案を求めました。現在のところ、私のために働いている提案はありません。
基本的に、z方向の回転はしたくありません。次の画像は、どこで問題が発生したかを示しています。モデルが z 方向に完全に回転しました。これを止めたい。
これは、同じことを達成するための私の複数の試みです。
void Update ()
{
// If there are two touches on the device...
if (Input.touchCount == 1 && GameManager.Instance.IsGameStart) {
// Store currnet touch.
Touch touch = Input.GetTouch (0);
// transform.RotateAround (transform.position, Vector3.up, - touch.deltaPosition.x Time.deltaTime 15f);
// transform.RotateAround (transform.position, Vector3.right, touch.deltaPosition.y Time.deltaTime 15f);
// transform.RotateAround (transform.position, Vector3.forward, 0f);
// transform.Rotate (Vector3.up, -touch.deltaPosition.x Time.deltaTime 10f, Space.World);
// transform.Rotate (Vector3.right, touch.deltaPosition.y Time.deltaTime 5f, Space.World);
// transform.Rotate (Vector3.forward, 0f, Space.World);
myRigidbody.MoveRotation (myRigidbody.rotation Quaternion.Euler (Vector3.right touch.deltaPosition.y Time.deltaTime 5f));
myRigidbody.MoveRotation (myRigidbody.rotation Quaternion.Euler (Vector3.up -touch.deltaPosition.x Time.deltaTime 10f));
}
}
上記の各ブロックは、z 方向を制限する独自の取り組みを表しています。今、同じことを達成するための提案を教えてください。
同様に、Unityフォーラムで行われている私の議論 3Dモデルのタッチベースの回転
編集: z 回転でリジッドボディを制限してみました。それで、私のインスペクターはこのように見えます。
EDIT :ゲーム開発のチャット ルームに関する議論の後。私は次のようなコードを持っています:
float prevZ = transform.eulerAngles.z;
transform.Rotate (Vector3.up, -touch.deltaPosition.x Time.deltaTime 10f, Space.World);
transform.Rotate (Vector3.right, touch.deltaPosition.y Time.deltaTime 5f, Space.World);
Vector3 modelVec = transform.eulerAngles;
modelVec.z = prevZ;
transform.eulerAngles = modelVec;
解決に近づいていますが、現在、私のゴルフ グローブ モデルは、上部または下部のサイド ドラッグから 180 度以上移動できません。私はちょうど約180度に達し、それはちょうど他の方向に回転します.