유니티/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
반응형