우선 장문의 스크립트 질문 죄송합니다..
하지만 뉴비라 어디서부터 얼만큼을 긁어서 질문을 해야할 지모르겠어서..
종 비율 슈팅게임 유튜브 보고 똑같이 따라 만들어보고있는데.. 우선 상황을 설명을 드리자면..
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);