ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 케이디 강의5 - (총든 팔 생성, 발사 구현, 파티클 추가, 사운드 삽입)
    인프런 강의 - 케이디 생존게임 2022. 11. 7. 22:34
    반응형

     

    public class GunController : MonoBehaviour
    {
        [SerializeField]
        private Gun currentGun; // 현재 소유하고 있는 총 ((각종 총의 정보를 참조가능해짐))
    
        private float currentFireRate; // gun 스크립트의 FireRate 값을 넣음 //이 값을 깎아 0이 되면 발사할 수 있게 만듬
    
    
        private AudioSource audioSource; // 오디오소스 요청 
    
    
    
        private void Start()
        {
            
            {
                audioSource = GetComponent<AudioSource>(); //오디오 소스 할당
            }
        }
        void Update()
        {
            GunFireRateCalc();
            TryFire();
        }
    
        //##총기 발사##
        private void GunFireRateCalc() // 발사 딜레이 계산
        {
            if (currentFireRate > 0) //현재 연사속도가 0보다 크면
                currentFireRate -= Time.deltaTime; // 1씩 깎는다
        }
    
        private void TryFire() // 발사시도
        {
            if(Input.GetButton("Fire1") && currentFireRate <= 0) //좌클릭 && 현재 연사속도가 0보다 작거나 같을때만 가능
            {
                Fire();
            }
        }
        
        //##실제 발사 (클릭 후 과정)##
        private void Fire() // 발사 전
        {
            currentFireRate = currentGun.fireRate; // 발사를 하면 fireRate를 원래 값으로 돌림== 0보다 작을 경우에만 발사 할 수 있으므로 재계산까지 발사 못함
            Shoot();
        }
    
        private void Shoot() // 발사 후
        {
            PlaySE(currentGun.fire_Sound); //효과음 (currentGun 안에있는 효과음)
    
            currentGun.muzzleFlash.Play(); // 파티클 플레이
            Debug.Log("총알 발사함");
        }
    
        //##사운드##
        private void PlaySE(AudioClip _clip)//효과음 재생
        {
            audioSource.clip = _clip; //오디오 소스에 클립삽입
            audioSource.Play(); //재생
        }
    
    }

    발사 구현 / 사운드 코딩

     

    public class Gun : MonoBehaviour
    {
        public string gunName; // 총의 이름(여러 종류의 총을 이름으로 구분)
        public float range; // 사정 거리
        public float accuracy; // 정확도
        public float fireRate; // 연사속도
        public float reloadTime; // 재장전 속도
    
        public int damage; // 총 데미지
    
        //##총알 수 관리##
    
        public int reloadBulletCount; // 총알 재장전 개수
        public int currentBulletCount; // 현재 탄알집에 남아있는 총알의 개수
        public int maxBulletCount; // 최대 소유 가능 총알 개수
        public int carryBulletCount; // 현재 소유하고 있는 총알 개수
    
        //##반동##
    
        public float retroActionForce; // 반동 세기
        public float retroActionFineSightForce; // 정조준 시 반동 세기
    
        public Vector3 fineSightOrginPos; // 정조준 시 총의 위치값 변수
    
        public Animator anim; // 애니메이터
        public ParticleSystem muzzleFlash; // 총구섬광 파티클
    
        public AudioClip fire_Sound; // 총 발사음
    }

    총기 인포

     

     

     

     

    골자는 이전 강의(케이디 강의 - 4) 와 비슷했다.

     

    총마다 지정해줄 수 있는 여러 정보를 저장하는 스크립트와

     

    총 발사와 여러 효과를 제어하는 스크립트가 오늘 추가되었다.

     

     

     

    private void Shoot() // 발사 후
        {
            PlaySE(currentGun.fire_Sound); //효과음 (currentGun 안에있는 효과음)

            currentGun.muzzleFlash.Play(); // 파티클 플레이
            Debug.Log("총알 발사함");
        }

     

        private void PlaySE(AudioClip _clip)//효과음 재생
        {
            audioSource.clip = _clip; //오디오 소스에 클립삽입
            audioSource.Play(); //재생
        }

     

    사운드 부분 이외에는 대부분 한번씩 봤던 부분이라 크게 주의할 코드는 없었다.

     

     

    파티클 기능 설명이 대부분인 회차였음 파티클에 대해 상당히 자세하게 설명해준다.

    (파티클 만들 때 해당 회차를 참고하면 좋을듯))

     

     

    반응형
Designed by Tistory.