본문 바로가기

Unity/Unity3D_Quater

Unity3D_Quater - 총알 발사 구현

#1. 원거리무기로 공격하기 - 총알 및 탄피 프리팹을 instate 및 destroy하는 방식으로 구현

    1) 총알 만들기 - Trail Renderer 오브젝트(구 콜라이더, 리지드바디) - 프리팹 생성 
    2) 탄피 만들기 - 모델프리팹 오브젝트(박스콜라이더, 리지드바디) - 프리팹생성
    3) 플레이어가 z키로 공격했을때 총알이 발사되고 탄피가 튕겨 나가서 아래로 떨어지고 탄피는 사라짐
        - z키로 공격 : 플레이어 어택함수
        - 오른팔을 들어올림 : shot애니메이션 실행
        - 총알이 발사 : 총알 프리팹 생성 instate , 총알 프리팹 생성될 위치, 리지드바디 속력 또는 힘을 주어 일정방향으로 나아감
        - 탄피가 튕겨 나가 : 탄피 프리팹 생성 instate, 탄피 프리팹 생성될 위치, 리지드 바디 랜덤속력 또는 랜덤힘을 주어 랜덤방향으로 나아감, + 힘을주어 회전
        - 아래로 떨어지고, 탄피 사라짐 : 탄피에 리지드바디로 중력 적용, 마지막에 destroy

 

 

1. 총알발사위치, 탄피발사위치, 총알프리팹, 탄피프리팹 생성

 - 총알이 생성될 위치 Transform정보가 들어있는 BulletPos오브젝트 생성 -- 플레이어 눈앞쪽에 위치

 - 탄피가 생성될 위치 Transform정보가 들어있는 BulletCasePos 오브젝트 생성 --총기 옆면에 위치

 - 빈오브젝트에 Trail Renderer속성 + 콜라이더 + 리지드바디를 추가하여 핸드건(초록) 서브머신건(파랑)의 총알오브젝트  각 각 생성

 - 다운받은 탄피 오브젝트로 탄피 오브젝트 생성

 - 총알 오브젝트와 탄피오브젝트를 프리팹으로 만듬

 

 

2.코드 구현

 

1) Weapon스크립트 코드구현

 

*rigidbody.AddTorque(벡터(축), 포스모드); ---> 벡터 축을 중심으로 힘을 주어 회전시키는 코드

 2) Player 스크립트 코드구현

 

3)총알이나 탄피가 바닥이나 벽에 닿으면 사라지도록 코드구현

 

4)원거리무기 오브젝트 인스펙터창에 각각 프리팹 및 위치정보 오브젝트를 드래그 앤 드랍

 

 

3.총알 장전

 

1) Weapon 스크립트

 

2)Player 스크립트