728x90
Gun.cs
// 재장전 시도
public bool Reload()
{
if (state == State.Reloading || ammoRemain <= 0 || magAmmo >= gunData.magCapacity)
{
// 이미 재장전 중이거나 남은 탄알이 없거나
// 탄창에 탄알이 이미 가득한 경우 재장전할 수 없음
return false;
}
// 재장전 처리 시작
StartCoroutine(ReloadRoutine());
return true;
}
// 실제 재장전 처리를 진행
private IEnumerator ReloadRoutine()
{
// 현재 상태를 재장전 중 상태로 전환
state = State.Reloading;
// 재장전 소리 재생
gunAudioPlayer.PlayOneShot(gunData.reloadClip);
// 재장전 소요 시간만큼 처리 쉬기
yield return new WaitForSeconds(gunData.reloadTime);
// 탄창에 채울 탄알 계산
int ammoToFill = gunData.magCapacity - magAmmo;
// 탄창에 채워야 할 탄알이 남은 탄알보다 많다면
// 채워야 할 탄알 수를 남은 탄알 수에 맞춰 줄임
if (ammoRemain < ammoToFill)
{
ammoToFill = ammoRemain;
}
// 탄창을 채움
magAmmo += ammoToFill;
// 남은 탄알에서 탄창에 채운만큼 탄알을 뺌
ammoRemain -= ammoToFill;
// 총의 현재 상태를 발사 준비된 상태로 변경
state = State.Ready;
}
할당해주고
프리팹화 되어있기 때문에 overrides 해주기
이제 다음에~
FK / IK
'Hello, World! > Unity' 카테고리의 다른 글
유니티에서 VSCode를 쓰자 (0) | 2022.05.30 |
---|---|
유니티 파티클 시스템 (골드메탈님 따라하기) (0) | 2022.05.18 |
유니티 3D 좀비 서바이벌 게임 만들자 (12) / Raycast 레이캐스트 (0) | 2022.04.19 |
유니티 3D 좀비 서바이벌 게임 만들자 (11) (0) | 2022.04.18 |
유니티 3D 좀비 서바이벌 게임 만들자 (10) (0) | 2022.04.15 |
댓글