전투기 구현, 미사일

MOON·2022년 8월 28일
0
post-thumbnail

전투기

전투기는 저번 에셋에서 사용한 항공모함 위에 전투기가 아니라 다른 형태의 에셋을 찾아보았다.

나는 3인칭과 1인칭을 전환하며 플레이를 가능하게 할려한다.

그러므로 조종석이 투명한 유리로 되어있는 에셋을 검색하여 다운 받았다.

위의 에셋을 골랐으며 이 전투기에 미사일이나 총을 달아 사용할 예정이다.

항공모함에 배치시 위에 사진처럼 된다.

우선 전투기에 미사일을 달아 발사 시켜 보겠다.

미사일

양쪽에 미사일을 발사하기 위해 특정 오브젝트를 만들겠다.

위의 사진처럼 전투기 양쪽에 동그란 오브젝트를 만들어 붙인다.

헷갈리지 않기 위해 이름을 left, right를 달아 바꾸자.

여기에 capsule collider를 필요할지 모르니 추가 시켜놓았다.

그리고 이 오브젝트 앞에 미사일이 발사할곳을 양쪽에 빈 오브젝트를 만들어 missile로 이름을 바꾼다.

이제 미사일을 발사시켜 보겠다.

우선 발사할 미사일을 에셋으로 찾아보았다.

다양한 미사일이 들어있는 에셋이 있길래 다운받아 사용하였다.

여러 미사일중에 하나를 골라 프리팹으로 사용할 예정이다.

위에 사진을 보면 조금 차이가 있다.

뒤에 미사일 불꽃이 달려있는데 이것은 내가 만든것이다.

미사일 컴포넌트는 위에 사진처럼 하였으며 발사시 회전이 이상하게 되는 것을 방지하기 위해 Freeze하였다.

미사일 프리팹의 하위의 빈오브젝트를 만든 뒤 Flame이라고 이름을 지어준다.

이 Flame에 Particle System 컴포넌트를 추가 시켜준다. 굉장히 많은것이 보이는데

설명할것이 많아 넘어가겠다.

나는 옆에 적어놓은 링크를 보면 만들었다. 미사일 불꽃

이렇게 완성된 미사일에 스크립트를 추가시켜보자.

Missiles_bullet이라는 스크립트를 만든 뒤 수정하자.

미사일을 할당할 변수를 선언하고 attack 변수는 나중에 보스 HP를 공격할때 사용할 예정이다.

Rigidbody 컴포넌트를 가져오고 AddForce를 통해 앞으로 발사 시킨다.

우선은 이 정도만 하고 동그란 오브젝트, 즉 미사일 발사대에 좌, 우 스크립트를 만들어보자.

missiles, missiles R이라는 스크립트르 만들어 사용해보자.

missiles R에 스크립트는 아래와 같다.

미사일 프리팹, 미사일 발사지점을 할당할 변수들을 선언한다.

Start() 함수에서 GameObject.Find()를 통해 특정 오브젝트를 찾아 위치를 저장시킨다.

만약 마우스 우클릭을 누를 시 발사 되며 특정시간이 지나면 사라지게 된다.

다른 missiles 스크립트는 위와 동일하게 만들며 변수 이름만 조금 변경하면 된다.

이렇게 적은 스크립트를 동그란 오브젝트라고 한 left, right에 추가시키면 발사가 된다.

그런데 미사일이 많이 어색해 보인다.

그래서 추가할 것이 미사일 경로, 폭발효과, 사운드, 소리를 구현할 예정이다.

미사일 경로

미사일이 날아갈때 그 뒤로 꼬리처럼 만들 예정이다.

만들어 놓은 미사일 프리팹에 Trail Renderer컴포넌트를 추가시켜준다.

색깔은 눈에 띄게 빨간색에서 하얀색으로 바뀌며 5초로 설정하였다.

Width는 미사일이 빠르게 날아가므로 육안으로 보이지 않아 바꾸지 않았다.

이러면 미사일이 움직임에 따라 빨간색 선이 그어진다.

폭발 효과

미사일이 물체에 충돌할때 폭발효과를 일으키려 한다.

위의 에셋중에 폭발 파티클 중 마음에 드는것을 사용하면 된다.

이제 missiles_bullet.cs를 수정해보자.

public GameObject M_exp; // 변수 선언

void OnCollisionEnter(Collision other) {
        GameObject copyM_exp = Instantiate(M_exp) as GameObject;
        copyM_exp.transform.position = transform.position;
        Destroy(copyM_exp, destroy)
        }

위에 코드를 넣어서 수정시키면 된다.

파티클을 할당할 변수, 이후 충돌시 동적으로 복제시키며 생기는 위치를 미사일의 위치로 정한다.

이후 시간이 지나면 폭발 파티클이 사라진다.

소리

소리 같은 경우 구글에다 무료인 소리를 찾아 원하는것을 다운 받으면 된다.

소리는 일정하게 들리도록 플레이어의 부위인 left에 추가할 예정이다.

아래는 missiles의 스크립트 수정본이다.

RequireComponent는 특정 컴포넌트를 자동으로 요구한다.

소리를 할당할 변수를 선언하며 AudioSource 컴포넌트를 가져온다.

이후 변수에 원하는 소리를 드래그 해서 채우면 된다.


이것으로 마무리하고 총으로 넘어가겠다.
profile
나만의 공간

0개의 댓글