본문 바로가기

Unity/Unity3D_Quater

Unity3D_Quater - 몬스터 처치시 아이템드랍, 점수획득

1.몬스터 사망시 아이템 드랍 및 점수획득

-몬스터 death함수에 랜덤한 코인(총3개)을 드랍하도록함 - > 배열에 3개의 코인을 담아서 랜덤한원소값 오브젝트 생성
-몬스터 각각 고유의 점수를 부여하고 사망시 플레이어에게 점수를 플러스 

 

 

-이후 몬스터들을 프리팹화랍 및 점수획득

-몬스터 death함수에 랜덤한 코인(총3개)을 드랍하도록함 - > 배열에 3개의 코인을 담아서 랜덤한원소값 오브젝트 생성

-몬스터 각각 고유의 점수를 부여하고 사망시 플레이어에게 점수를 플러스 

 

 

 

 

 

-이후 몬스터들을 프리팹화

 

* 버그 -> ontriggerEnter로 인한 코인 획득이 중첩되어 일어나는 현상 -> 코루틴 EatingItem() 으로 해결

*버그 -> 몬스터가 죽었는데 분신이 나타나느 버그 -> 컴포넌트에 실수로 자기 자신을 할당해버림..

*몬스터를 나올때 마다 잡는다 하더라도 결국 죽은 몬스터와 스테이지 숫자가 같아 지기 전까진 아래 코인을 다 먹어야 넘어가는 과정으로 못넘어가도록 구현

*코인을 다 먹었을때 비로소 다음 스테이지로 넘어가도록 구현 -> 드랍된 코인과 먹은 코인 갯수가 같을때 넘어가도록

 

*버그 -> 피격 후 사망시 회색으로 몬스터가 변하지 않던 것을 해결 -> 코루틴의  yield 타이밍 순서를 바꾸고 하얀색으로 변하는 코드에 조건을 추가 

 

*버그 -> 보스 사망시 코인이 차례대로 여러개 드랍되는 코루틴을 만들었지만 작동되지 않음 -> 해당 코루틴을 Enemy스크립트에서 만들었지만 해당 스크립트를 상속받은 Boss 스크립트의 Update()문에 StropAllCoroutine이 작동되었기 때문

 

*Ondamage() 코루틴에서 몬스터의 피격과 죽음을 모두 구현했던 코드에서 몬스터의 죽음 부분을 일반함수로 꺼냄

 

*몬스터의 피격과 죽음 함수를 호출하기 위한 조건으로 bool enemyIsdead 및 현재 몬스터 체력상태 등을 추가로 주어

 좀더 엄격하게 함수를 호출하도록 구현

 

*혹여나 instantiate과정에서 프리팹 중복 생성을 막기 위해

PrefabManager 스크립트를 작성하여 빈 오브젝트에 할당하고 

Instantiate(PrefabManager.Instance.EnemyPrefab[Random.Range(0, 3)], ....) 방식으로 enemy프리팹생성 코드 구현 

 

이후 해야할 일 

1. 보스몬스터를 5의 배수 스테이지 단위마다 소환하고 보스가 생성될때 보스체력바가 보이도록하고 보스가 죽으면 체력바가 사라지도록 만듬 

 

2. 골드메탈님 방식인 적생성구간에 List를 만드는 것으로 코드를 재구현해보고 배열만으로 만든 것과 무슨차이가 있는지 확인해보기

 

 

 

2 .스테이지 및 몬스터 관리 - 몬스터생성시 배열만 사용

 

 

 

3. 스테이지 관리 및 몬스터 관리 - 몬스터 생성시 배열과 리스트 활용

 *GameObject몬스터배열안의 원소 즉 어떤 형태의 몬스터를 가져올 것인지에 대한 

int를 담고 있는 List를 만들면 스테이지마다 생성될 몬스터의 총 마릿수와, 어떤 몬스터가 차례대로 생성될 것인지에 대한 정보를 미리 알고 있게 된다

 

 

 

 

 

4. 몬스터 사망시 코인 드랍! - Enemy 스크립트