
금방 끝날줄 알았는데 괜히 내비메시 에이전트 쓰다가 뜻밖의 오류에 시간을 허비했다.
그냥 instantiate로 소환해서 쓸땐 몰랐는데 오브젝트풀로 하려니 오류가 한두개가 아니였다.
풀에서 빌려와서 position값으로 옮기면 오류가나서 해외 사이트까지가서 열심히 뒤져보니
navmesh안에 있는 warp함수를 써서 옮겨줘야했다.
또 빌려오고 다시 넣는 과정에서 켜져있어도 자꾸 오류가났다.
enable을 적절히 써줘야해서 결국 다 고치긴 했는데 움직임이 매끄럽지 않아서 그냥 다 삭제해버렸다.
위치 정하기
원래는 1,2,3,4 번 구역을 나눠서 스폰을 시키려고 했는데 맵이 작다보니 활동반경이 너무 작아지는 문제가 있었다.
바닥 스케일값의 0.5f , 0.25f를 한 값을 시작할때 저장해두고 랜덤으로 스폰위치, 패트롤 위치를 반환해주는 함수를 만들었다.
//스폰위치 리턴 함수
public Vector3 GetSpawnVector()
{
SpawnArea = new Vector3(Random.Range(SpawnMap.position.x - SpawnMapsize.x, SpawnMap.position.x + SpawnMapsize.x), 1.0f
, Random.Range(SpawnMap.position.z - SpawnMapsize.y, SpawnMap.position.z + SpawnMapsize.y));
return SpawnArea;
}
빨간색이 패트롤 범위고, 노란색이 스폰 범위이다.
구석에 스폰되면 움직임에 불편함이 있어서 그냥 안전하게 좁은 범위로 정했다.
패트롤
계획은 6마리 or 9마리지만 3마리만 만들어놓고 실험을 해봤다.
장애물을 만나면 위치를 다시 할당해준다.
목표 위치에 도착하면 3초간 서있다가 다시 움직이게 했다.
IEnumerator ReSpawn(int index)
{
yield return new WaitForSeconds(10.0f);
SpawnMonster(index);
}
public void SpawnMonster(int index)
{
if (MaxCount[index] < 3)
{
GameObject monster = ObjectPool.Instance.GetMonster(index);
monster.transform.position = GetSpawnVector();
MaxCount[index]++;
}
else
return;
}
죽으면 리스폰 코루틴을 호출하게했다.
그리고 10초 후에 랜덤으로 반환된 스폰 되게 했다.
맥스 카운트는 최대 3마리로 제한하려고 만들어둔건데 ..
한마리를 죽이면 한마리가 리스폰되니 굳이 검사는 안해도 될것같다.
적 감지
전에 만들어둔거지만 이렇게 패트롤 하다가 적을 발견하면 바로 뛰어와서 공격을한다.
암살 기능을 추가했기 때문에 조용히 걷는 버튼을 추가할건데
조용히 걸으면 콜라이더 범위 안에 들어와도 인식x
그냥 걸으면 콜라이더 범위 안에 들어오면 인식o
근데 지금 구현을 안해놔서 시야각에 들어왔을때만 인식이 된다.
계획한거보다 너~무 느려서 일단 주말에 엄청 해야될거같다.
new 포폴 16일차 끝
'개발일지 > Unity 개인 포트폴리오 개발일지' 카테고리의 다른 글
new 포폴 18일차 / 스킬 만들기와 이펙트 (0) | 2022.07.25 |
---|---|
new 포폴 17일차 / 퀘스트와 이펙트 작업 시작 (0) | 2022.07.24 |
new 포폴 15일차 / 대화 시스템 구현 (0) | 2022.07.22 |
new 포폴 14일차 / 버그 수정과 상점 구현 (0) | 2022.07.21 |
new 포폴 13일차 / 암살 (0) | 2022.07.20 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!