どうもこんにちは、n清(@n_nkiyo)です!
先日、Unityを使用してアナログ時計を作ったので今回はその紹介と実際の作り方を解説しようと思います。
【Unity】アナログ時計を作ってみた!!
<
1・外見を作る
2・スクリプト(C#)
3・スクリプトの解説
1・外見を作る
まずは外見から作っていこうと思います。
といっても今回は3Dで作ってしまったため、画像の切り取りなどは行いません。
また、得意なセットも使ってはいないため、Cylinderを組み合わせて作りました。
まずは土台
次に針を作って(写真はないですが、短針もつくりました。)
シンプルだけど、完成!
2・スクリプト(C#)
では、時計を作り終えたら各針の根元部分に回転の中心となるGameObjectを設置し、Scriptを入れるためのGameObjectも設置します。
(ここでGameObjectがうまく入らないという方は、こちらを参考にしてみてください。)
その後、以下のスクリプトをGameObjectに入れてあげます。
もちろん、各針のObjectの設定は忘れないでください(下で解説)
using System; // DateTime.Nowに必要
using System.Collections;
using UnityEngine;
public class Tokei : MonoBehaviour {
public bool byousin; //秒針の有無
public bool byoubyousin; //秒針を秒ごとに動かすかどうか
public GameObject tyou; //
public GameObject tan; //各針用のGemaObject(わかりやすい名前をつけましょう)
public GameObject byou; //
void Start ()
{
if (!byousin)
Destroy(byou); // 秒針を消す(true false で書いても良かったかなと思ってます。)
}
void Update ()
{
DateTime dt = DateTime.Now;
tan.transform.eulerAngles = new Vector3(0,0,(float)dt.Hour/12*-360 + (float)dt.Minute/60*-30);
tyou.transform.eulerAngles = new Vector3(0,0,(float)dt.Minute/60*-360);
if (byousin)
{
if (byoubyousin)
byou.transform.eulerAngles = new Vector3(0,0,(float)dt.Second/60*-360);
else
byou.transform.eulerAngles = new Vector3(0,0,(float)dt.Second/60*-360 + (float)dt.Millisecond/60/1000*-360);
}
}
}
(↑GameObjectの設定)
3・スクリプトの解説
最後に、解説とまでは言いませんが、補足を加えようと思います。
今回は、せっかく時計を作るなら実際の時間を表示したいと思い、「DateTime.Now」プロパティを使用しました。
これは、デバイスの現在時刻を取得してくれるプロパティです。ただし、使う際の注意点として、「using system;」をスクリプトの一番上に追加する必要があります。
もっと詳しく知りたい方は、こちらをのぞいてみてください。
DateTime.Now Property (System) | Microsoft Docs
あとこれは完全に補足ですが、
void Start ()
{
if (!byousin)
Destroy(byou); // 秒針を消す
}
この部分は、true false を利用して書いても良かったかなと思っています。
それでは、今回は以上です。
拙い解説でしたが、お付き合いありがとうございました、n清(@n_nkiyo)でした⏰