6つのセクションに分割されたスピンホイールを作成しようとしています。各セクションには、そのセクションの中央に配置されたgameObjectがマークされます。プレイヤーがホイールを回転させると、ホイールが回転を停止し、ホイールが選択されたセクション(ランダムに)に基づいて中央に移動して停止するまで回転します。私は、X軸上の0に向かってホイールを回転させるために次のコードを使用しました。選択したセクションが正のX軸上にある場合にのみ、このコードは正常に動作し、ホイールは正常に回転します。 回転方向を設定する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);
私はいくつかの掘削をしたとQuaternion.RotateTowards()
がターゲットに向かって最も近い道を見つけ、その方向(これは回転の方向に問題を引き起こした)を使用して回転させることを見出しました。
例(画像に従う):プレイヤーがスワイプし、ランダムなリワード(スピンホイールの5番)を押すとホイールが回転を開始します。車輪が減速すると、車輪は中央に向かって動き始めます。次に、スワイプの方向に沿って回転を停止し、反対側に向かって回転します(中央までの距離が左側から近づいているため)。
どのようにセンターに近いかにかかわらず、スワイプの同じ方向に従うように設定するにはどうすればよいですか。そして、これを行うより良い方法があれば、私に教えてください。ありがとう。
「スワイプの時間」を使う代わりに、私はf_difXを使用しました。これは、基本的にプレーヤーがどこを残したかのポイントですスワイプする前に画面に触れた位置 - スワイプの時間とスピンの時間を結びつけるというアイデアがあります。そのアイデアを具体的に説明することは可能ですか?答えは:) –