何してきたかのメモ🍣🍣

エンジニアです、最近はPHPやってます。 ジャンル不問の備忘録です。 気になったことをメモ的に書いてます。

【Unity】簡単なアナログ時計の作り方【C#】

どうもこんにちは、n清(@n_nkiyo)です!

 

先日、Unityを使用してアナログ時計を作ったので今回はその紹介と実際の作り方を解説しようと思います。


【Unity】アナログ時計を作ってみた!!

 

<

 

1・外見を作る

2・スクリプト(C#)

3・スクリプトの解説

 

 

1・外見を作る

 

まずは外見から作っていこうと思います。

 

といっても今回は3Dで作ってしまったため、画像の切り取りなどは行いません。

また、得意なセットも使ってはいないため、Cylinderを組み合わせて作りました。

 

Unity,unity,ユニティ,ユニティー,うにty,初心者,基本,基礎,わかりやすい,簡単,分かりやすい,優しい,易しい,時計,アナログ,アナログ時計,とけい,針,土台,画像,ブログ,1,2,3,4,5,1,2,3,4,5,作る,もの,ポートフォリオ,ポート,かんたん,きほん,初めて,はじめて,公式,外見,3D,2D,ソース,プログラム,プログラマ,C#,C,Java,JavaScript,じゃば,ジャバ,ジャバスクリプト,言語,げんご

まずは土台

Unity,unity,ユニティ,ユニティー,うにty,初心者,基本,基礎,わかりやすい,簡単,分かりやすい,優しい,易しい,時計,アナログ,アナログ時計,とけい,針,土台,画像,ブログ,1,2,3,4,5,1,2,3,4,5,作る,もの,ポートフォリオ,ポート,かんたん,きほん,初めて,はじめて,公式,外見,3D,2D,ソース,プログラム,プログラマ,C#,C,Java,JavaScript,じゃば,ジャバ,ジャバスクリプト,言語,げんご

Unity,unity,ユニティ,ユニティー,うにty,初心者,基本,基礎,わかりやすい,簡単,分かりやすい,優しい,易しい,時計,アナログ,アナログ時計,とけい,針,土台,画像,ブログ,1,2,3,4,5,1,2,3,4,5,作る,もの,ポートフォリオ,ポート,かんたん,きほん,初めて,はじめて,公式,外見,3D,2D,ソース,プログラム,プログラマ,C#,C,Java,JavaScript,じゃば,ジャバ,ジャバスクリプト,言語,げんご

次に針を作って(写真はないですが、短針もつくりました。)

Unity,unity,ユニティ,ユニティー,うにty,初心者,基本,基礎,わかりやすい,簡単,分かりやすい,優しい,易しい,時計,アナログ,アナログ時計,とけい,針,土台,画像,ブログ,1,2,3,4,5,1,2,3,4,5,作る,もの,ポートフォリオ,ポート,かんたん,きほん,初めて,はじめて,公式,外見,3D,2D,ソース,プログラム,プログラマ,C#,C,Java,JavaScript,じゃば,ジャバ,ジャバスクリプト,言語,げんご

シンプルだけど、完成!

 

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);
}

}
}

 

Unity,unity,ユニティ,ユニティー,うにty,初心者,基本,基礎,わかりやすい,簡単,分かりやすい,優しい,易しい,時計,アナログ,アナログ時計,とけい,針,土台,画像,ブログ,1,2,3,4,5,1,2,3,4,5,作る,もの,ポートフォリオ,ポート,かんたん,きほん,初めて,はじめて,公式,外見,3D,2D,ソース,プログラム,プログラマ,C#,C,Java,JavaScript,じゃば,ジャバ,ジャバスクリプト,言語,げんご

(↑GameObjectの設定)

 

3・スクリプトの解説

 

最後に、解説とまでは言いませんが、補足を加えようと思います。

 

今回は、せっかく時計を作るなら実際の時間を表示したいと思い、「DateTime.Now」プロパティを使用しました。

これは、デバイスの現在時刻を取得してくれるプロパティです。ただし、使う際の注意点として、「using system;」をスクリプトの一番上に追加する必要があります。

もっと詳しく知りたい方は、こちらをのぞいてみてください。

DateTime.Now Property (System) | Microsoft Docs

 

あとこれは完全に補足ですが、

void Start ()
{
if (!byousin)
Destroy(byou); // 秒針を消す
}

この部分は、true false を利用して書いても良かったかなと思っています。

 

それでは、今回は以上です。

拙い解説でしたが、お付き合いありがとうございました、n清(@n_nkiyo)でした⏰