Unityで条件を満たす間処理を繰り返す方法/While文の使い方

IT

Unity(C#)で繰り返し処理を行う方法はいくつかありますが、While文では指定した条件を満たす間処理を繰り返すことができます。
待機処理を使って、一定時間ラジオをゆらゆら揺らしてみようと思います。

スポンサーリンク

成果物

lp2
クリックすると、オブジェクトが一定時間ゆらゆら動く、というものを作ります。

While文の使い方

stop1
このオブジェクトはクリックすると曲が鳴るようにしてあるんですが、曲の再生中に何かさせたいので、
stop3
左右交互に傾けるのがお手軽でいいんじゃないかな、という訳で作業開始します。
stop2
角度はz軸に左右12度ずつ傾けることにします。
stop4
一気に傾けるのではなく少しずつ傾けたいので、まずは整数を作り、
stop5
While文で少しずつ傾けることにします。
Whileは()内の条件を満たす間処理を実行し続けます。この場合、iが100未満であれば処理を行い続けます。
stop6
Rotateを使って1度ずつ角度を変更するようにして、実行してみると、
lp1
一瞬で傾き終わってしまいます。しっかり100回実行してるんですが、速度が速すぎて全くアニメーションになりません。
Whileの解説はこれで終わりですが、流れ上待機処理も実装してみます。

待機処理の実装(yield return new WaitForSeconds)

stop7
voidの代わりにIEnumeratorという名称で新しいメソッドを作ります。
コルーチンという機能で待機処理を行う場合、IEnumeratorが必須となります。メソッド名は好きに付けてOKです。
stop8
中にまずyield return new WaitForSeconds(0.02f);と記述します。
最後の0.02fが秒数となります。
stop9
IEnumeratorの中に、Whileの処理も移動します。
stop10
クリックしたときの処理で、StartCoroutine(“dance”);のように記述すると、IEnumeratorの処理を呼び出すことができます。
stop11
あとは力技で、i(一周ごとに1増える)を12で割った数字で処理を振り分ければ、
lp2
こんな具合で、目的が達成できました。
lp3
ちなみに連打すると動きが激しくなりますが、これは仕様です(面白いので残してある)。

完成品はこちら

やりたいことから逆引きするUNITYの使い方まとめ
Unityをやりたいことから学習していけるよう、機能・用途別にまとめたページです。C#の命令別の逆引きは現時点で作っていません。2019の時期に書き始めているので、それより前のバージョンについては言及しません。

コメント