1.Enemy A 오브젝트 생성
- Enemy A 프리팹을 드래그 앤 드랍하고 컴포넌트로 리지드바디, 박스콜라이더, Enemy 스크립트를 추가해준다
- Enemy A 프리팹의 자식 오브젝트에 meshRenderer 컴포넌트가 있으므로 Enemy 스크립트에서 meshRenderer를 초기화 해주는 Awake()안의 코드를 GetComponentInChildren으로 바꾸어준다
2. 네비게이션으로 몬스터 AI 주어 플레이어 추적하기
1). Enemy A 오브젝트의 컴포넌트로 Nav Mesh Agent를 추가해줌
2) 몬스터가 플레이어를 추적하도록 코드구현 (중요스킬)
*navMeshAgent - 네비메쉬에이젼트 컴포넌트
*.SetDestination(추적할 오브젝트 위치) - 추적로직
3) Navigation으로 땅을 구워(Bake)주어야 로직이 실행됨
*Static 상태인 오브젝트에서만 구워짐!!!(중요)
4) 몬스터와 플레이어가 충돌했을때 몬스터에게 새로 가해지는 회전속도 및 속도를 없애서 충돌 이후 플레이어를 따라가지못하는 현상을 수정하고 몬스터가 죽었을때는 넉백효과가 제대로 발생되도록 코드 구현
*네비메쉬에이젼트 컴포넌트가 활성화 되어있는경우엔 해당 오브젝트가 위쪽 방향으로 움직일 수 가 없다.. 바닥에 붙어다녀야하는 듯 하다
3.애니메이션
- 애니메이터를 새로 만들어서 Enemy A 안의 Mesh Object에 드래그 앤 드랍 후 애니메이션 설정
*GetComponentInChildren으로 애니메이션 컴포넌트 가져오기
- 관련 코드 구현
4. 리펙토링
-isTracking 이라는 bool값의 플래그 변수를 생성하여 이를 활용하기 위한 리펙토링
- Awake()에서 2초 후 isTracking을 1번 true로 바꿔주면서 Update() 안의 Tracking()함수가 동작하도록 해주고
- 몬스터 사망시에 isTracking 변수를 false로 바꿔주면서 navMeshAgent 컴포넌트도 비활성화 시켜준다
*38 ~ 48번째 줄 리펙토링 재수정(최종본)
'Unity > Unity3D_Quater' 카테고리의 다른 글
Unity3D_Quater - 돌격형 몬스터 구현 (0) | 2021.03.03 |
---|---|
Unity3D_Quater - 플레이어의 피격, 몬스터A 공격 구현 (0) | 2021.03.02 |
Unity3D_Quater - 캐릭터 폭탄투척, 폭탄 이펙트, 적 폭탄피격 구현 (0) | 2021.02.24 |
Unity3D_Quater - 피격 테스터 만들기 (0) | 2021.02.22 |
Unity3D_Quater - 마우스에 의한 회전 및 공격 구현, 물리문제 해결 (0) | 2021.02.22 |