우선 장문의 스크립트 질문 죄송합니다..

하지만 뉴비라 어디서부터 얼만큼을 긁어서 질문을 해야할 지모르겠어서..

종 비율 슈팅게임 유튜브 보고 똑같이 따라 만들어보고있는데.. 우선 상황을 설명을 드리자면..

1.적 비행기는 0~8번 총 9개의 포인트에서 랜덤 생성된다.

2.정 비행기의 종류는 L,M,S 3종류 이다.

3.L비행기는 미사일2개를 동시에 발사한다.

4.L비행기가 미사일을 쏠 때 다음과 같은 에러 메세지가 출력된다.

ndexOutOfRangeException: Index was outside the bounds of the array.

GameManager.SpawnEnemy () (at Assets/Script/GameManager.cs:39)

GameManager.Update () (at Assets/Script/GameManager.cs:25)

5. 오류나는 스크립트의 부분은 

            SpawnEnemy();

        GameObject enemy = Instantiate(enemyObjs[ranEnemy],

이렇게 두 부분이다.(둘 다 적이 랜덤하게 생성된다는 부분이다.)

6.에러는 나지만 모든 기능이 정상 작동중이다.

7.스크립트에 빨간줄은 없다.


2일째 찾아보고 고쳐보고 다시보고 하는데 도저히 모르겠더라구요 ㅠ

영상에 질문도 올리긴 했는데 3년전 영상이라 뎃글이 달릴지 어떨지 모르겠어서...

염치없지만 답변 부탁드립니다 ㅠㅠ


public class GameManager : MonoBehaviour

{

    public GameObject[] enemyObjs;

    public Transform[] spawnPoints;


    public float maxSpwanDelay;

    public float curSpwanDelay;


    public GameObject player;

    public Text scoreText;

    public Image[] lifeImage;

    public GameObject gameOverSet;


    void Update()

    {

        curSpwanDelay += Time.deltaTime;


        if(curSpwanDelay > maxSpwanDelay)

        {

            SpawnEnemy();

            maxSpwanDelay = Random.Range(0.5f, 3f);

            curSpwanDelay = 0;

        }


        //UI Score Update

        Player playerLogic = player.GetComponent<Player>();

        scoreText.text = string.Format("{0:n0}", playerLogic.score);

    }


    void SpawnEnemy()

    {//적 랜덤 생성

        int ranEnemy = Random.Range(0, 3);

        int ranPoint = Random.Range(0, 9);

        GameObject enemy = Instantiate(enemyObjs[ranEnemy],

                                       spawnPoints[ranPoint].position,

                                       spawnPoints[ranPoint].rotation);

        Rigidbody2D rigid = enemy.GetComponent<Rigidbody2D>();

        Enemy enemyLogic = enemy.GetComponent<Enemy>();

        enemyLogic.player = player;



        if (ranPoint == 5 || ranPoint == 6)

        {

            //생성 포인트 5,6 에서 생성 시

            enemy.transform.Rotate(Vector3.back * 90);

            rigid.velocity = new Vector2(enemyLogic.speed * (-1), 0);

        }


        else if (ranPoint == 7 || ranPoint == 8)

        {

            //생성 포인트 7,8 에서 생성 시

            enemy.transform.Rotate(Vector3.forward * 90);

            rigid.velocity = new Vector2(enemyLogic.speed, 0);