Unity_기초_드래곤플라이트비슷한게임만들기_적 스포너
일단 empty opject 를 만들어주고, 화면 밖에서 쓰래기들을 소환시켜야 한다.
스크립트를 적어 주는데, 일단은 5개의 쓰래기들이 스포너에서 생성되서 정해진 위치에 놓여져야 하기 때문에
배열을 만들어서 그 위치 값을 적어주는게 필요하다.
그리고 저번 시간에 7가지의 쓰래기들을 만들어 놨기 때문에 어떤 쓰래기가 생성될 것인지 그 쓰래기들의 파일을 넣어줘야 한다. 그래서
를 이용해서 유니티 안에서 직접 연결될 수 있도록 하자.
새롭게 enemy를 정의할 수 있는 창이 생겼다.
여기에 쓰래기들을 넣어주자.
다음은 다시 코드로 돌아가서, 반복문을 사용해서 5개의 위치 값을 넣어 계속해서 쓰래기들이 고정된 x좌표에서 생성되도록 해야한다.
먼저 위에서 배열로 정의한 x 값들을 spawn enemy 안에 전달 받도록 하자.
(float posX, int index(enemies 라는 배열에서 몇 번째 요소의 적을 가져올 것인지)) {
처음에 객체가 생성되는 위치를 반영, = (x,y,z 값) x값은 5개의 배열에서 차례로 값을 가져오고, y 값은 스포너 기준으로 바꿔준다.
}
그 다음에는 플레이어코드에서 탄환을 발사할 때 사용되었던 코드를 가져와 사용한다.
를
로 바꿔주자.
위의 코드와 작동 방식은 같다. enemies 에 넣어놓은 7가지 적들 중에서 하나를 뽑아와 생성한다. 생성하는 위치는 위에서 정의한 spawnPos 에서 가져온다. 그 뒤에 회전 여부를 묻는 뭐시기를 처리하면 된다.
그 다음에는 이제 만든 메소드들을 바탕으로
본격적으로 적들을 생성해볼 차례다.
위쪽의 Start 는 시작할 때 한 번만 실행되는 코드다.
저번에 사용했을 때는, 탄환이 무한정생성되지 않도록 사라지는 타이머 역할을 했다.
스폰 에너미가 뭘 불러올지는 위의 위치 배열에서 가져와서 쓰면 된다. 그 값은 0에서부터 4까지 5개의 배열 안을 돌기 때문에 0으로 시작 지점을 잡아주자.
그렇다면 이번에는 소환할 쓰래기들을 정해야 하는데 7가지가 있으니까 0~6까지 의 종류를 정해야한다.
우리는 랜덤으로 뽑고 싶으므로 랜덤 코드의 도움을 받을 수 있다.
인덱스라는 값을 설정하고, 그 값은 범위 내에서 랜덤으로 정해진다. 그 범위를 뒤에 정의하는데,
시작 지점에서부터 enemies 배열이 가진 길이, 즉 0~6 까지라고 한다면, 배열의 길이는 7이 되는 것이다. 그런데 이 부분은 마지막 7을 포함해서 읽지는 않기 때문에 0에서부터 7 직전인 6까지 우리가 원하는 범위가 된다.
게임을 실행해 보면, 하나의 위치에서 각기 다른 쓰래기들이 랜덤하게 떨어지는 것을 볼 수 있다.
왜냐하면 지금 쓰래기들의 배열에서 index 값은 랜덤하게 받아오도록 반복문을 만들었지만, 위치 값은 아직이기 때문이다.
그러기 위해서는 arrPosX 의 값을 아래의 float posX 값 안에 넣어줄 필요가 있다. foreach를 사용해서 넣을 수 있다.
이러면 in을 사이에 두고, 그 뒤에있는 배열에서, 앞에있는 값으로 값을 적용시킬 수 있다. 정확히는
그 값을 적용하고, 뒤에 있는 (지금 위에는 대괄호로 되어 있는데) 중괄호에 들어간 코드를 활성화 하고 다시 arrPoX 값을 하나 바꾸고 다시 적용하는 반복문이 되는 것이다.
앞서 만든 SpawnEnemy 랜덤 배열을 반복문 안에 집어 넣으면,
방금은 바뀌지 않았던 쓰래기들의 x 값이 시시각각 바뀌면서 들어간다.
실행까지 해 보면 동일한 속도로 한 무리의 쓰래기들이 각기 다른 형태로 내려오는 것을 볼 수 있다.