左右キーの操作で、90度回転してストップする仕組みをつくってみましょう。
約1秒間かけてゆっくりと回転します。
右に向いたり、左に向いたりといったプレーヤー操作にも使えそうです。
関連記事:
約1秒かけてゆっくり移動する
0.1秒おきにゆっくり拡大
左右回転のスクリプト
Cubeオブジェクトを作成し、CubeTurn.csを追加します。
CubeTurn.csのコードは次のように書きました。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeTurn : MonoBehaviour { //回転中かどうか bool coroutineBool = false; void Update() { if(Input.GetKeyDown("right")) { //回転中ではない場合は実行 if (!coroutineBool) { coroutineBool = true; StartCoroutine("RightMove"); } } if(Input.GetKeyDown("left")) { //回転中ではない場合は実行 if (!coroutineBool) { coroutineBool = true; StartCoroutine("LeftMove"); } } } //右にゆっくり回転して90°でストップ IEnumerator RightMove() { for (int turn=0; turn<90; turn++) { transform.Rotate(0,1,0); yield return new WaitForSeconds(0.01f); } coroutineBool = false; } //左にゆっくり回転して90°でストップ IEnumerator LeftMove() { for (int turn=0; turn<90; turn++) { transform.Rotate(0,-1,0); yield return new WaitForSeconds(0.01f); } coroutineBool = false; } } |
0.01秒おきに1°ずつ回転。これを90回くり返しています。
0.01 × 90 = 0.9秒
およそ1秒かけて真横に回転さます。
右キーを押すと、右に90°回転。左キーを押すと、左に90°回転。
boolを使って、コルーチン実行中は、回転しないように制御しました。
関連記事:
約1秒かけてゆっくり移動する
0.1秒おきにゆっくり拡大