인프런 강의 - 케이디 생존게임
케이디 강의5 - (총든 팔 생성, 발사 구현, 파티클 추가, 사운드 삽입)
WMG1
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(); //재생
}
사운드 부분 이외에는 대부분 한번씩 봤던 부분이라 크게 주의할 코드는 없었다.
ㅡ
파티클 기능 설명이 대부분인 회차였음 파티클에 대해 상당히 자세하게 설명해준다.
(파티클 만들 때 해당 회차를 참고하면 좋을듯))
반응형