c#
1 2private IEnumerator Searching() 3 { 4 float o = obsession; 5 6 for (float i = 0; i < o; i++) 7 { 8 float serachRange_x = Random.Range(-1.5f, 1.5f); 9 float serachRange_y = Random.Range(-1.5f, 1.5f); 10 searchPoint = new Vector3(serachRange_x, serachRange_y, 0); 11 12 Vector2 basePos = nowpos; 13 Vector2 targetPos = nowpos + searchPoint; 14 Vector2 dif = targetPos - basePos; 15 float radian = Mathf.Atan2(dif.y, dif.x); 16 float degree = radian * Mathf.Rad2Deg; 17 targetdeg = degree; 18 19 rbody.velocity = searchPoint; 20 21 22 obsession--; 23 24 if (lost == false) 25 { yield break; } 26 27 yield return new WaitForSeconds(1.0f); 28 29 30 } 31 32
このスクリプトは、目標(プレイヤー)を追従する敵オブジェクトの、プレイヤーを見失った際の動きとして書きました。
rbody.velocity = searchPoint;
までの処理で、ランダムに目標地点を設定しては移動させ、
これを繰り返す間に敵の視界トリガーが再びプレイヤーのコライダーを捉えるとlost==false
となって、繰り返しを抜けて次の処理へ行く予定でした。
ですが、yield break;
でも処理を終わらせることができず、コルーチン内の繰り返し処理と、予定の次の処理がどちらも行われてしまいます。
意図通りにするにはどう直せば良いでしょうか。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。