아이템 효과를 설정하고 플레이어가 먹었을 때 아이템 타입에 따라서 효과를 다르게 발동 시키도록 하는게 목표

먼저 enum으로 ItemType로 뭘 설정할지 목록을 작성 후
public으로 만들어 게임 오브젝트에 어떤 유형의 아이템인지 설정

OnTriggerEnter2D를 사용해서 태그가 Player면 PlayerEffect에 설정 되어있는 아이템 유형의 효과 발동

아이템은 획득 후 제거해준다

타입에 따라서 다른 효과를 낼 수 있도록 설정

여기서 코루틴을 사용하는데

https://coding-of-today.tistory.com/171#:~:text=%EC%BD%94%EB%A3%A8%ED%8B%B4%EC%9D%98%20%EC%82%AC%EC%9A%A9%20%EB%B0%A9%EB%B2%95%EC%9D%84%20%EC%95%8C%EC%95%84%EB%B3%B4%EC%9E%90.%20%ED%81%AC%EA%B2%8C%202%EA%B0%80%EC%A7%80%EC%9D%98%20%ED%95%84%EC%88%98%EC%A1%B0%EA%B1%B4%EC%9D%B4%20%EC%9E%88%EB%8B%A4.,yield%20return%20null%3B%20%3A%20%EB%8B%A4%EC%9D%8C%20%ED%94%84%EB%A0%88%EC%9E%84%EC%97%90%20%EC%8B%A4%ED%96%89%20%EB%90%A8.

이 글과 강의를 참고하며 사용

update를 사용하는 것 보다 효율적으로 필요한 순간에만 반복할 수 있어 더 좋다

자석 아이템을 예를 들어 이해해보자

float duration이 지속시간을 설정해주기 위한 변수

IEnumerator(인터페이스) 컬렉션(List, 배열 등)을 순차적으로 탐색하는 기능
컬렉션의 현재 위치를 기억하고 다음 요소로 이동하거나 현재 요소를 가져오는 등의 작업 가능

yield return 반복기 코루틴 함수 내에서 실행을 일시 중단하고 특정 값을 반환하는 역활

즉 플레이어가 아이템을 먹으면 아이템 타입에 따른 효과가 정해진 초 만큼 지속되고 꺼지는 기능

내일은 점수 추가랑 오브젝트 충돌에서 무적적용을 어떻게 시킬지 고민해보면 될것같다

0개의 댓글