【Unity 入門】全方位シューティングを作る 第16回 敵を倒したら宝石を落とす
こちらのサイトを参考にHPが0になったら、starPrefabが生成されるという処理を組みました。
エラー内容
IndexOutOfRangeException: Array index is out of range. Enemy.Update () (at Assets/Scripts/Enemy.cs:39)
すると、上記のようなエラーが発生しました。
39行目にエラーが出ていることを確認し、修正しようと参考サイトを見直しながらしてみたのですが、修正案がわかりませんでした。ので、このエラーの解決方法が知りたいです。
コード
c#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using System.Linq; 5 6public class Enemy : MonoBehaviour { 7 8 public int HP = 5; 9 public int m_exp; 10 public Star[] star; 11 public float starSpeedMin; 12 public float starSpeedMax; 13 14void Update () { 15 16 if (HP == 0) 17 { 18 var exp = m_exp; 19 20 while(exp > 0) 21 { 22 var starPrefabs = star.Where(c => c.Exp <= m_exp).ToArray(); 23Enemy.cs.39→ var starPrefab = starPrefabs[Random.Range(0, starPrefabs.Length)]; 24 var stars = Instantiate(starPrefab, transform.position, Quaternion.identity); 25 stars.Init(m_exp, starSpeedMin, starSpeedMax); 26 exp -= stars.Exp; 27 } 28 Destroy(gameObject); 29 } 30 31 } 32
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/10 07:13
2018/07/10 07:28
2018/07/21 08:45