인프런 강의 - 케이디 생존게임
케이디 강의11 - (바위-공격을 통한 이펙트와 파괴 구현)
WMG1
2022. 11. 14. 18:38
반응형
public class Rock : MonoBehaviour
{
[SerializeField]
private int hp; // 바위의 체력
[SerializeField]
private float destroyTime; // 바위 파편 제거시간
//필요한 콜라이더
[SerializeField]
private SphereCollider col; // 구체 콜라이더 콜라이더도 비활성화 시켜줘야함
//필요한 게임 오브젝트
[SerializeField]
private GameObject go_rock; // 일반바위
[SerializeField]
private GameObject go_debris; // 깨지는 바위
//콜라이더와 리지드바디를 이용해 자동으로 흩어지고 깨지는바위를 구현했음
[SerializeField]
private GameObject go_effect_prefabs; // 채굴 이펙트
[SerializeField]
private AudioSource audioSource; //오디오소스 컴포넌트
[SerializeField]
private AudioClip effect_sound; // 효과음
[SerializeField]
private AudioClip effect_sound2; // 효과음2
public void Mining() //바위 부수는중
{
audioSource.clip = effect_sound; //오디오클립을 이펙트 사운드로 변경
audioSource.Play(); //오디오소스 재생
var clone = Instantiate(go_effect_prefabs, col.bounds.center, Quaternion.identity);
//생성(생성하는것, 콜라이더의 중심, 훼손값.기본값으로)
Destroy(clone, destroyTime); // 이펙트 파편파괴
hp--;
if (hp <= 0) //바위체력 1씩 감소시키고 0보다 작거나 같아지면
Destruction(); //파괴함수 실행
}
private void Destruction() //바위 파괴함수
{
audioSource.clip = effect_sound2; //오디오클립을 이펙트 사운드로 변경
audioSource.Play(); //오디오소스 재생
col.enabled = false; //콜라이더 비활성화
Destroy(go_rock); //일반바위 파괴
go_debris.SetActive(true); // 깨지는 바위 활성화
Destroy(go_debris, destroyTime); //깨지는 바위 파괴, 유예시간
}
}
사용코드
PickaxeController (곡괭이 상속 스크립트)
HitCoroutine함수에
if (CheckObject()) //함수 호출
{
*** if(hitInfo.transform.tag == "Rock")//태그가 바위일경우
{
*** hitInfo.transform.GetComponent<Rock>().Mining(); //컴포넌트 획득.내부 함수 실행
}
조건과 함수실행 추가
오디오 클립을 통한 임시 사운드 할당을 알아보았다.
ㅡ
파괴 효과 구현 시
원본 스프라이트, 파괴표현을 위해 조각낸 뒤 붙여놓은 스프라이트가 필요했고
곡괭이로 바위 타격 시 돌조각이 날리는 효과는
조각내놓은 스프라이트 크기를 줄이고 인스턴스화 로 구현하였다.
반응형