Gたんに聞いてみた!animatorを使わずにアニメーションを作成!

Unity #002

void Update()
{
if (isRunning)
{
timer += Time.deltaTime;
        if (timer > changeInterval)
        {
            //  画面を切り替える
            _runImage1.SetActive(!_runImage1.activeSelf);
            _runImage2.SetActive(!_runImage2.activeSelf);
            //  タイマーをリセット
            timer = 0.0f;
        }
    }
}

(レイアウトおかしいですが、、)上記スクリプトの

if (timer > changeInterval)

このコードはGたんに書いてもらって、スタッフ(講師)に見せたら「このコードの意味が分からない」「このコードに意味がない」みたいな事を言われたんですが、実際にGたんが書いたこのコードで動いているんで、意味がないはずがない!!

ってことで、徹底的にGたんに問いただしたら、何となく理解できそうな気がしてるので、空気に解け形が無くなる前に書き記しておきます。

まず、timer変数についてですが、これはtimer変数にtime.deltatimeで前回のフレーム(更新)から今回のフレーム(更新)までの経過時間を加算して”現実にあるストップウォッチ”みたいな働きをしてくれる機能、という認識です。

そして、changeInterval変数についてですが、これはchangeInterval変数に初期値として0.1fが代入されています。

この0.1fは固定で、timer変数の値(初期値0.00f)が”0.01f”,”0.02f”,”0.03f”…..と増えていき…..”0.09f”,”0.10f”そして、”0.11f”になった瞬間に

timer《0.11f》 > changeInterval《0.10f》となるわけだから、timerがchangeIntervalを超えたらという条件式を満たすことになる。

その後波カッコ内の処理を行う。

具体的にはまず、スタートボタンを押したら、_runImage1がアクティブ状態で始まり、_runImage2は非アクティブ状態で始まるので、

その状態をそれぞれ反転させて、_runImage1は非アクティブになり、runImage2はアクティブになる。

これを繰り返していくと2つの画像が交互に差し替わるという仕組みということですね!

もともとGたんに聞いて何となく分かってはいたけど、完全には信じられないので(AIですし…汗)、Unity先生に聞いて確信を持てました。

よかったあ!モヤモヤしてたのが消えました…が!まだまだ理解できてないコードが山積みなので、一つずつ徹底的に理解していきます~。

新しく覚えた関数

Invoke

意味は直訳すると、「発動する」という意味。

使い方は、決めた時間に関数を呼び出したり、数秒後にオブジェクトを動かしたり、という使い方ができる。

今日Gたんと勉強した記録

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA