閲覧ありがとうございます。
Unity2Dのスクリプトに関する質問です。
コルーチンの中でオブジェクトをy軸について90°回転させたあと、同じ速度で0°まで回転させたいです。
ソースは以下の通りになります。
C#
1public class MyCardBehaviour : MonoBehaviour { 2 public float openSpeed = 3; 3 4 void Start() { 5 StartCoroutine(OpenMotion()); 6 } 7 8 public IEnumerator OpenMotion () { 9 while(transform.localEulerAngles.y <= 90f) { 10 transform.Rotate(0f, openSpeed, 0f); 11 yield return null; 12 } 13 14 while (transform.localEulerAngles.y >= 0f && transform.localEulerAngles.y <= 180 ) { 15 transform.Rotate(0f, -openSpeed, 0f); //なぜか回らない このブロック自体には入ってる 無限ループに入っている模様 yを正にすると回るしブロックを抜ける 16 yield return null; 17 } 18 19 transform.localEulerAngles = Vector3.zero; //誤差が出るかもなので一応0に戻す 20 } 21}
上記のコードを実行すると、一度目のwhileは正常に処理し90°になる(2Dオブジェクトなので視認できなくなる)のですが、二度目のwhileの中で止まってしまうらしく、マイナス方向への回転が行われません。(視認できないまま)
二度目のwhile内でログを出力したところ無限にログが出力されたため、ブロック自体には入っておりループもしているようでした。
原因がわかる方いらっしゃいましたらご回答よろしくお願いします。
回答1件
あなたの回答
tips
プレビュー