카테고리 없음

유니티 잡설_NevMesh

zelkova 2021. 2. 4. 07:35

<목차로 돌아가기> 

 

참조 : SebastianLague

 

Plane에 네브메쉬 켜고 걸어다닐 수 있는 영역 적용.

 

장애물 만들고 걸어다닐 수없는 영역 지정.

 

AI를 부여할 오브젝트를 선택후 Agent부여

 

 

그리고 AI를 부여한 스크립트에 아래의 소스 삽입하면 잘 따라댕김.

[RequireComponent (typeof(NavMeshAgent))]
public class Enemy : MonoBehaviour
{
    NavMeshAgent pathFinder;
    Transform target;
    // Start is called before the first frame update
    void Start()
    {
        pathFinder = GetComponent<NavMeshAgent>();
        target = GameObject.FindGameObjectWithTag("Player").transform;
    }

    // Update is called once per frame
    void Update()
    {
        pathFinder.SetDestination(target.position);
    }
}

 

조금더 효율적으로 업데이트한다면 1초에 60번 계산 -> 1초에 4번 계산.

[RequireComponent (typeof(NavMeshAgent))]
public class Enemy : MonoBehaviour
{
    NavMeshAgent pathFinder;
    Transform target;
    // Start is called before the first frame update
    void Start()
    {
        pathFinder = GetComponent<NavMeshAgent>();
        target = GameObject.FindGameObjectWithTag("Player").transform;

        StartCoroutine(UpdatePath());
    }

    // Update is called once per frame
    void Update()
    {
    }


    IEnumerator UpdatePath() {
        float refresRate = .25f;

        while(target != null) {
            Vector3 targetPosition = new Vector3(target.position.x, 0, target.position.z);
            pathFinder.SetDestination(targetPosition);
            yield return new WaitForSeconds(refresRate);
        }
    }
}

 

 

반응형