인프런 강의 - 케이디 생존게임

케이디 강의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(); //컴포넌트 획득.내부 함수 실행
                }

조건과 함수실행 추가

 

오디오 클립을 통한 임시 사운드 할당을 알아보았다.

 

 

파괴 효과 구현 시

원본 스프라이트, 파괴표현을 위해 조각낸 뒤 붙여놓은 스프라이트가 필요했고

곡괭이로 바위 타격 시 돌조각이 날리는 효과는

조각내놓은 스프라이트 크기를 줄이고 인스턴스화 로 구현하였다.

 

 

 

 

 

 

 

 

 

 

 

 

반응형