[유니티 강좌 7] 비행기 움직이기와 미사일 발사
지난 포스팅까지 해서 비행기와 미사일 , 적 그리고 폭파 장면까지 만들어 봤습니다. 이번에는 비행기를 움직이고 미사일을 발사하는 과정을 진행해 보겠습니다. 비행기만 빼고 모두 프리팹으로 만들겠습니다.
먼저 비행기는 키보드로 움직입니다. 이때 비행기가 화면을 벗어나지 않도록 이동 범위를 제한해줘야 하구요. 또 적과 충돌할해서 파괴되는 경우도 있을겁니다.
우선 비행기의 이동범위를 설정하도록 하겠습니다. 지난 포스팅에서 화면의 크기를 정할때 했던 방법으로 비행기의 비행기를 움직여봐서 화면내에서 움직일 수 있는 최대의 범위를 찾아야 합니다. 디자인 탭에 있는 비행기를 이동했을때 화면을 빠져나가지 않는 x , y좌표의 최대값이 얼마인지 먼저 확인하겠습니다.
비행기를 최대한 움직여봐서 화면을 벗어나지 않는 x, y의 값을 양쪽으로 구했습니다.
비행기가 적과 충돌하는 경우도 있지만 우선 충돌에 관한건 조금 뒤로 미루고 이번에는 제한된 범위에서만 움직이고 미사일을 발사할 수 있도록 해보겠습니다.
자바스크립트를 작성해서 연결할게요.
먼저 미사일부터 작성해서 연결하겠습니다.
마시일 속도를 50으로 해서 비행기보다 빠르게 했으며 적을 폭파할때 사운드 출력을
위해서 오디오 클립을 선언했습니다.
미사일은 발사가 되면 오른쪽으로이동을 하게되며, 이동하다가 한계(x>37)이면
스스로 삭제 되도록 했습니다.
비행기의 스피트는 20으로했구요. 미사일과 폭발불꽃은 프리팹으로 만들어서 연결할거구요. 발사할때 사운드 출력을 위해서 오디오클립을 선언 했습니다.
게임이 시작할 스판 포인터를 찾게 했고 방향키로 [위, 아래(Y축)],[ 앞, 뒤(x축)] 로 움직이게 했습니다. 비행기의 이동 범위를 지정한 범위내로 제한을 했으며 미사일은 Instantiate를 만들어서 스스로 이동하게 했고, 발사할때 사운드가 출려되도록 했습니다.
비행기의 이동 범위를 제한한 함수를 보면 Clamp() 함수를 사용했는데요. 이 함수는 최소값과 최대값을 정해놓으면 그 범위안에 있을때는 원래의 값이 구해지고, 범위를 벗어나게 되면 최대값과 최소값이 구해지게 됩니다. 예를 들어 최대값을 5로 정해놓으면, 6,7.....1000이 되어도 최대값은 5입니다.
Transform.posiont.x=Mathf.Clamp(transform.position.x, 24, 29) 부분을 Clamp()함수를 사용하지 않으면 다음과 같이 두개의 문장으로 표현이 됩니다.
if(transform.position.x <-24) transform.position.x=-24;
if(transform.position.x > 29) transform.position.x=29;
이제 다음과 같이 스크립트를 비행기에 연결하고 프리팹으로 만든 미사일과 폭파화면, 오디오 파일을 스크립트의 변수부분에 연결했습니다.
이제 게임을 실행해서 미사일을 발사해 보겠습니다. 오늘은 폭발장면이나 충돌과정은없이 비행기의움직임과 미사일 발사까지만 구현해 봤습니다. 적 비행기는 아직 스크립트 작성을 안했기 때문에 움직이지는 못합니다.