前提・実現したいこと
自分とターゲットオブジェクトが一定距離になった時に、0.5秒刻みにSEを鳴らすというシステムが作りたいです。
0.5秒刻みにSEを鳴らすのをコルーチンで行いたいのですが、StopCoruotineを行っていないにも関わらず、
コルーチンが一巡して止まってしまいます。
Update内のHeartBeatFlgは、同じコルーチンを複数回起動しないため、動いていないコルーチンに停止処理をかけないために
HeartBeatFlgで管理しています。
自分の認識では、StartCoroutineを行うと並列でコルーチンが動き、
StopCoroutineをするまで動き続けるという認識です。
もし、認識自体が間違っているようでしたら指摘していただきたいです。
よろしくお願い致します。
発生している問題・エラーメッセージ
StopCoroutineを行っていないのにコルーチンが一巡して止まってしまう。
該当のソースコード
C#
1 2private bool HeartBeatFlg = false; 3 4void Update () { 5 distance = (transform.position - target.transform.position).sqrMagnitude; 6 7 //Debug.Log("distance ; " + distance); 8 9 if(distance < 25.0f && HeartBeatFlg == false) 10 { 11 StartCoroutine(HeartBeat()); 12 Debug.Log("鼓動開始"); 13 } 14 else if (distance >= 25.0f && HeartBeatFlg == true) 15 { 16 StopCoroutine(HeartBeat()); 17 HeartBeatFlg = false; 18 Debug.Log("心臓停止"); 19 } 20 } 21 22 private IEnumerator HeartBeat() 23 { 24 Debug.Log("鼓動確認中ーー"); 25 HeartBeatFlg = true; 26 sound.PlaySE(4); 27 yield return new WaitForSeconds(0.5f); 28 }
試したこと
StartCoroutine後にコルーチン内のDebug.Logで確認したところ、
StopCoroutineに入っていないが一巡して終わっていることを確認しました。
補足情報(FW/ツールのバージョンなど)
○Unity
Unity2018.2.19f1
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/01/22 20:20