1. 오늘의 목표
자원을 계속 만들기 위해 나무가 다 캐지면 일정 시간마다 다시 생기도록 만들 예정이다.
무엇을 활용할 수 있을까요? Coroutine?
일단 가봅시다 Let's go
2. 제작 개시 🛠️
1. 일단 제작 구상
1. 아이템이 다 떨어지면, ResourceObject.cs가 달린 GameObject를 SetActive(false).
2. 리스폰 시간이 끝나면 SetActive(true)로 변경
3. 재 생성될 시점에, 빈 오브젝트의 IsTrigger 콜라이더에 Player 혹은 Enemy Tag가 존재한다면(감지된다면) 코루틴으로 재생성을 더 지연시킴
2. 어떻게 진행시켜볼까...구상 구현 🤔
1. 일단 아이템이 다 떨어지면 SetActive를 false로 변경
여기까지는 어렵지 않다!
2. 다음 단계, 리스폰 시간이 끝나면 SetActive를 true로 변경
SetActive(false) 상태에서도 동작할지는 모르겠지만, 일단 코루틴을 넣어보기로 했다. 현재 리스폰 시간은 30초로 지정했다.
결과:
Coroutine 'RespawnResource' couldn't be started because the the game object 'snowTree (1)' is inactive!
UnityEngine.MonoBehaviour:StartCoroutine (string)
ResourceObject:Gather (UnityEngine.Vector3,UnityEngine.Vector3) (at Assets/Scripts/GameObj/ResourceObject.cs:49)
EquipTool:OnTriggerEnter (UnityEngine.Collider) (at Assets/Scripts/GameObj/AboutEquip/EquipTool.cs:46)
= 요약: 얘 SetActive(false)라서 코루틴 안 돌아가는데?
나: 응...그럴 것 같았어.
그래서! ResourceControl이라는 스크립트를 새로 만들었다.
목적: 코루틴으로 대신 Active를 시켜주기 위함
다른 목적: 이 빈오브젝트 밑으로 다른 클론들을 쭉 넘겨주면..오브젝트 하나로 전부 관리할 수 있지 않을까?!
우선 기존 목적인, 30초 뒤에 다시 생성되는지부터 확인해보자.
재생성이 됐고, 영상에는 안찍혔지만 (...) 다시 다가가서 휘적휘적하면 아이템도 정확하게 습득되는 것을 확인했다.
코루틴을 이용해서 delay 시간동안 인고의 기다림을 시켰기 때문이다.
대신 Object쪽에는 아래와 같은 코드를 넣어주었다.
용량 다시 넣기. =>이를 통해 재생성(다시 켜질 뿐이지만)되면 다시 채집이 가능해진다.
혹시 이거 둘 이상일 때도 가능한가? 싶어서 테스트를 해보기로 했다.
ResourceControl을 달고 있는 빈 오브젝트가 가장 상위에 있는 상태인데, 하위에 있는 두 오브젝트가 잘 꺼지고 켜지는 걸 확인할 수 있었다.
3. 이제 재생성 될 때, 플레이어나 적이 있다면 소환을 대기시켜보자!
1. 일단 ResourceArea라는 스크립트를 만들어, Trigger 감지용 콜라이더가 달린 빈 오브젝트에 붙여준다.
여기서 Enemy나 Player가 있는지 없는지 감지해줄 것이다.
Control에서는 resourceArea가 있는지 확인하고, 해당하는 오브젝트가 있는지 확인함과 동시에 IsBlocked가 true인지 확인해준다.
결과
: 설정된 콜라이더에서 벗어나기 전까지는 재생성 되지않고, 벗어난 후 일정 시간이 지나야만 회복된다.
3. 마무리
생각보다 잘 됐는 걸...?
이제 도끼에 Raycast를 달아서, Ray를 통해 자원/적과 마주하면 자원 채집, 적 공격이 되도록 할 예정이다.
지금은 Collider로 도끼가 인식하기 때문에, 닿기만 하면 자원을 자동 채집이 가능하기 떄문에, 이를 수정할 생각이다.
'Unity_본캠프' 카테고리의 다른 글
[내일배움캠프 38일차] 이거 왜 안 눌리나요? EventSystem이 없다고요? (0) | 2025.05.30 |
---|---|
[내일배움캠프 37일차] 제작템을 만들고 싶으니 일단 스크립트를 짜자 (1) | 2025.05.29 |
[내일배움캠프 34일차] 새로운 팀플 개시 (1) | 2025.05.26 |
[내일배움캠프 33일차] 잘못하면 시간 가속기에 들어가고 만다.... (0) | 2025.05.23 |
[내일배움캠프 32일차] 자꾸 하나만 물고 늘어지는 버릇을 고쳐야하는데 (0) | 2025.05.22 |