Unity(C#)で繰り返し処理を行う方法はいくつかありますが、While文では指定した条件を満たす間処理を繰り返すことができます。
待機処理を使って、一定時間ラジオをゆらゆら揺らしてみようと思います。
成果物
![lp2](https://sunagitsune.com/wp-content/uploads/2021/08/lp2.gif)
クリックすると、オブジェクトが一定時間ゆらゆら動く、というものを作ります。
While文の使い方
![stop1](https://sunagitsune.com/wp-content/uploads/2021/08/stop1.png)
このオブジェクトはクリックすると曲が鳴るようにしてあるんですが、曲の再生中に何かさせたいので、
![stop3](https://sunagitsune.com/wp-content/uploads/2021/08/stop3.png)
左右交互に傾けるのがお手軽でいいんじゃないかな、という訳で作業開始します。
![stop2](https://sunagitsune.com/wp-content/uploads/2021/08/stop2.png)
角度はz軸に左右12度ずつ傾けることにします。
![stop4](https://sunagitsune.com/wp-content/uploads/2021/08/stop4.png)
一気に傾けるのではなく少しずつ傾けたいので、まずは整数を作り、
![stop5](https://sunagitsune.com/wp-content/uploads/2021/08/stop5.png)
While文で少しずつ傾けることにします。
Whileは()内の条件を満たす間処理を実行し続けます。この場合、iが100未満であれば処理を行い続けます。
Whileは()内の条件を満たす間処理を実行し続けます。この場合、iが100未満であれば処理を行い続けます。
![stop6](https://sunagitsune.com/wp-content/uploads/2021/08/stop6.png)
Rotateを使って1度ずつ角度を変更するようにして、実行してみると、
![lp1](https://sunagitsune.com/wp-content/uploads/2021/08/lp1.gif)
一瞬で傾き終わってしまいます。しっかり100回実行してるんですが、速度が速すぎて全くアニメーションになりません。
Whileの解説はこれで終わりですが、流れ上待機処理も実装してみます。
Whileの解説はこれで終わりですが、流れ上待機処理も実装してみます。
待機処理の実装(yield return new WaitForSeconds)
こっちの記事でも待機処理について解説してるので、良かったら併せてご覧ください。
![stop7](https://sunagitsune.com/wp-content/uploads/2021/08/stop7.png)
voidの代わりにIEnumeratorという名称で新しいメソッドを作ります。
コルーチンという機能で待機処理を行う場合、IEnumeratorが必須となります。メソッド名は好きに付けてOKです。
コルーチンという機能で待機処理を行う場合、IEnumeratorが必須となります。メソッド名は好きに付けてOKです。
![stop8](https://sunagitsune.com/wp-content/uploads/2021/08/stop8.png)
中にまずyield return new WaitForSeconds(0.02f);と記述します。
最後の0.02fが秒数となります。
最後の0.02fが秒数となります。
![stop9](https://sunagitsune.com/wp-content/uploads/2021/08/stop9.png)
IEnumeratorの中に、Whileの処理も移動します。
![stop10](https://sunagitsune.com/wp-content/uploads/2021/08/stop10.png)
クリックしたときの処理で、StartCoroutine(“dance”);のように記述すると、IEnumeratorの処理を呼び出すことができます。
![stop11](https://sunagitsune.com/wp-content/uploads/2021/08/stop11.png)
あとは力技で、i(一周ごとに1増える)を12で割った数字で処理を振り分ければ、
![lp2](https://sunagitsune.com/wp-content/uploads/2021/08/lp2.gif)
こんな具合で、目的が達成できました。
![lp3](https://sunagitsune.com/wp-content/uploads/2021/08/lp3.gif)
ちなみに連打すると動きが激しくなりますが、これは仕様です(面白いので残してある)。
完成品はこちら。
![](https://sunagitsune.com/wp-content/uploads/2021/07/computer-1343393_1280-160x90.jpg)
やりたいことから逆引きするUNITYの使い方まとめ
Unityをやりたいことから学習していけるよう、機能・用途別にまとめたページです。C#の命令別の逆引きは現時点で作っていません。2019の時期に書き始めているので、それより前のバージョンについては言及しません。
コメント