나 개발자 진짜 되냐?

[ Unity 3D 서바이벌 게임 만들기 8 ] 자원 캐기 본문

유니티를 공부해봐요!/중급이에요!

[ Unity 3D 서바이벌 게임 만들기 8 ] 자원 캐기

Snow Rabbit 2024. 10. 29. 15:46

 

 

도끼는 챙겼고..

자원은 어디 있나?!

 

마크처럼

나무를 캐보자!

 


늘 그랬듯

 

빈 오브젝트에

나무 프리팹을 넣어주고

언팩 + 콜라이더 지워주기

위치는 자유롭게 정하고

Box콜라이더 크기는 맞춰주자!

 

아 콜라이더에

트리거를 체크 해줘야지만

나무를 캤을 때 나무통이 바닥으로 떨어진다.

 

추가로 레이어도 추가해 줘서

리소스라고 지어주고

리소스를 해주자.

 

자 이제

Resource.cs를 만들어서

자원을 어떻게 없앨지 적어주자

 

< Resource.cs >

 

using UnityEngine;

public class Resource : MonoBehaviour
{
    public ItemData itemToGive; // 이 자원을 채취할때 어떤 아이템을 줄건지
    public int quantityPerHit = 1; // 한대에 몇개 나올지
    public int capacity; // 몇번 때려야 자원이 사라질지

    public void Gather(Vector3 hitPoint, Vector3 hitNormal)
    {
        for (int i = 0; i < quantityPerHit; i++) // 때리는 만큼 진행
        {
            if (capacity <= 0) break; // 0이되면 안된다.

            capacity -= 1; // 한번 벨때마다 하나씩 빼준다.
            // 생성(dropPrefab), 위치는 때린곳에서 살짝 위에서 생성, 회전을 어떻게 해줄지
            Instantiate(itemToGive.dropPrefab, hitPoint + Vector3.up, Quaternion.LookRotation(hitNormal, Vector3.up));
        }

        if (capacity <= 0) // 0이면
        {
            Destroy(gameObject); // 자원 없애기!
        }
    }
}

 

주석에도 적어두었지만

자원을 퉁퉁 쳤을 때

몇 개 떨어질지

몇 번이면 끝날지 적어주도록 하자

 

다음에

장착무기에 가서

나! 자원 캔다!라고 알려줘야 한다.

 

그다음에

ray로 쏴서

그 물체를 상호작용 시키기까지 해 보자

 

Ray를 쓸 거니까 카메라 가져오고

 

밑에 함수를 만들어주자

 

치는 함수

이 hit 치는 함수는 어디로 가져와야 하냐?

 

애니메이션에서

툭 쳤을 때 그 순간에 해주어야 한다.

 

애니메이션으로 가서

 

장착할 거 누른 다음에

여기에다가 add  해주면

 

하나 파란 선이 뜨게 된다.

 

다음에

장비 프리팹을 눌러준 다음에

 

다시 애니메이션 창을 누르면

이렇게 뜬다

그러면 우리는 이 함수에다가

on hit을 해주면!

된다

 

도끼는

이 위치에 해주고!

 

검은

 

이 위치에다가 해준다.

 

 

다음에 나무에다가

리소스 스크립트를 넣어주고

 

아이템에다가

SO에 있는 wood를 넣어주면 된다.

 

 

이렇게 해주면!

 

 

나무가 5개 캐지고

큰 나무가 사라진 모습!!

 

이제 다음에는

도끼를 쓰거나

검을 휘두를 때

 

스테미너를 깎이게 해 보자!