現在作成中のゲームで、長針を指でドラッグして時計の針を動かすギミックを実装しようと思っています。
時計といっても自動では動かないため、単純に針が回せるオブジェクトの仕様になっています
指を置いた箇所へ時計の長針を適切に動かすプログラムを作りたいのですが、Unityの内部では回転の角度を適用する際に与えられた値を0~360に自動修正するためか、12 → 11の位置に針が動く際、以下のように右回りで移動してしまいます。
コードは以下のようになっています
C#
1private void UpdatePointers() //長針と短針を適切な位置へ 2 { 3 var hour_pointer_rot = currentTime / 12 * span; //現在の時間 / 針同士の間隔 4 var minute_pointer_rot = span * currentPointerDivision; //針同士の間隔 * 現在指の置かれている場所 5 6 var hourRot = hour_pointer.rotation.eulerAngles; 7 var minuteRot = pointer_minute.gameObject.transform.rotation.eulerAngles; 8 9 hourRot.z = Mathf.Lerp(hourRot.z, hour_pointer_rot, Time.deltaTime * rotateSpeed); 10 minuteRot.z = Mathf.Lerp(minuteRot.z, minute_pointer_rot, Time.deltaTime * rotateSpeed); 11 12 13 hour_pointer.rotation = Quaternion.Euler(hourRot); 14 pointer_minute.gameObject.transform.rotation = Quaternion.Euler(minuteRot); 15 }
長針に連動して短針も動いてしまっていますが、短針は指の動きには依存しないので無視してください。(結局短針の動きも長針と同じ仕組みなので12 → 11の際に右回りになってしまうのですが。。)
12 → 11の挙動を適切に実装するならどのような方法があるでしょうか。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。