1. 총알 만들

총알 모델의 앞부분이 y축으로 되있다. 이러면 서있는 리즈드 바디 를 주고 애드포스하면 서있는 상태로 날아갈 것이다.

 

GetComponent<Rigidbody>().AddForce(transform.forward * Speed);

애드포스는 z축을 기준으로 밀린다,

 

빈 게임 오브젝트를 생성해서 모델을 넣고 게임 오브젝트 z축을 기준으로 모델의 앞부분을 돌렸다.

 

Use Gravity는 디폴트값으로 체크 돼 있는데 해제해준다. 총알은 중력의 영향을 받으면 안 된다.

 

Tag만들기

테그를 블렛으로 변경해준다.

Bullet을 드레그해서 Project뷰에 Assets에 Prefabs폴더에 넣으면 프리팹이 된거다.

 

2. 총알 스크립트

스크립트를 넣고 플레이 해보면 총알이 날아간다.

 

3. 충돌체크

처음에 만들은 Wall에 총알이 충돌시 총알을 삭제하는 스크립트를 만들어보자.

C# Script( WallCtrl )를 Wall들에 넣어준다.

 

벽에 충돌하는 순간 OnCollisionEnter함수가 호출되면서 충돌한 게임오브젝트의 Collision을 받아온다. 게임오브젝트에 Tag를 확인후 맞다면 삭제한다.

 

4. 총알 발사

빈오브젝트를 생성해 이름을 FirePos로 만들었다.

빈오브젝트는 Scene 뷰에서 직접 클릭해서 선택할수 없다.

Hierarchy 뷰에서 오브젝트를 선택해야 하는데 불편하다. 그래서 사용자 정의 기즈모를 활용해 보자.

 

myGizmo스크립트를 만들었다.

 

 

스크립트 말고 Inspector에서 할수도 있다.

 

이제 총알을 생성할 위치와 생성되면 앞으로 날아갈 총알이 준비됐다.

 

FireCtrl 스크립트 생성

 

Player에 Fire Ctrl을 넣어주고 Bullet이랑 FirePos를 넣어주면 끝.

 

결과 동영상

 

5. 총알 발사궤적 효과 만들기

Bullet을 z축으로 드래그해서 이동시킨다.

 

머티리얼을 생성후 Shader를 변경하고 이미지를 넣는다.

 

Materials -> Element = BulletTrail을 넣어준다.

 

수정된 Bullet을 다시 프리팹으로 저장
6. 파티클 활용하기

project 뷰 -> Import Package -> ParticleStstems

 


WallCtrl 스크립트 수정

 

 

드레그 해줌.

 

눌러서 들어가서 0.30으로 변경하고 무한루프 체크를  푼다.

 

결과 동영상

 

 

7. 드럼통 만들기

 

 

8. 총구 화염 효과 or 소리

 

 

 

 

결과 동영상

 

반응형