유니티/AA(3D 쿼터뷰 액션 게임)
AA(21) - 플레이어 추격하는 몬스터 AI 구현
무직백수취업준비생
2021. 9. 23. 03:32
728x90
반응형
기본 몬스터로 사용할 오브젝트를 생성합니다.
리지드바디와 박스콜라이더, 에너미 스크립트를 추가합니다.
mat = GetComponentInChildren<SkinnedMeshRenderer>().material;
매쉬랜더러가 오브젝트의 하위 오브젝트에 스킨매쉬랜더러로 있기 때문에 Enemy 스크립트에서 수정해줍니다.
몬스터 오브젝트의 태그와 레이어를 Enemy로 수정하고 Nav Mesh Agent 컴포넌트를 추가합니다.
public Transform target; //추적할 대상의 좌표
NavMeshAgent nav;
void Awake()
{
nav = GetComponent<NavMeshAgent>();
}
void Update()
{
nav.SetDestination(target.position);//도착할 목표 위치 지정 함수
}
Enemy스크립트에 using UnityEngine.AI;를 선언한 뒤 스크립트를 추가해줍니다.
타깃에 플레이어를 드래그&드롭합니다.
추적을 위한 네비매쉬를 생성합니다.
몬스터가 플레이어를 추적하여 다가옵니다.
오류는 기존 피격 테스터에서 생기는 오류입니다.
이제 필요 없으니 지워줍니다.
void FreezeVelocity()
{
rigid.velocity = Vector3.zero;
rigid.angularVelocity = Vector3.zero;
}
void FixedUpdate()
{
FreezeVelocity();
}
물리력이 NavAgent 이동을 방해하지 않도록 로직을 추가합니다.
애니메이션을 세팅해줍니다.
파라메터와 트랜지션을 세팅하여 애니메이터를 완성합니다.
실행해보면 이동과 사망 애니메이션, 추적 모두 정상적으로 이루어집니다.
728x90
반응형