天天看點

【Unity學習筆記】——使用unity自帶尋路系統進行尋路

自動尋路步驟:

①  把場景中不動的物體勾選static

②  烘焙尋路網格

③  添加NavMeshAgent元件

④  給需要尋路的物體添加腳本

實作:

① 搭一個簡易場景

【Unity學習筆記】——使用unity自帶尋路系統進行尋路

放上enemy和player:

【Unity學習筆記】——使用unity自帶尋路系統進行尋路
【Unity學習筆記】——使用unity自帶尋路系統進行尋路
【Unity學習筆記】——使用unity自帶尋路系統進行尋路

把場景設為靜态

【Unity學習筆記】——使用unity自帶尋路系統進行尋路

選擇window→navigation,調出navigation面闆,選擇bake,形成一個藍色路面,enemy将在這個藍色路面上進行尋路

【Unity學習筆記】——使用unity自帶尋路系統進行尋路
【Unity學習筆記】——使用unity自帶尋路系統進行尋路

給尋路者(敵人)添加NavMeshAgent元件

【Unity學習筆記】——使用unity自帶尋路系統進行尋路
【Unity學習筆記】——使用unity自帶尋路系統進行尋路

把下面腳本挂到enemy上

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;

/// <summary>
/// 尋路算法
/// </summary>
public class NavTest : MonoBehaviour {

    private NavMeshAgent agent;//尋路者
    public Transform target;//尋路目标

    private void Start()
    {
        agent = this.GetComponent<NavMeshAgent>();
    }

    private void Update()
    {
        if(agent!=null)
        {
            agent.SetDestination(target.position);//尋路算法
        }       
    }
}
           
【Unity學習筆記】——使用unity自帶尋路系統進行尋路

運作,enemy自動靠近player

【Unity學習筆記】——使用unity自帶尋路系統進行尋路

但是enemy和player會重合在一起

【Unity學習筆記】——使用unity自帶尋路系統進行尋路

調Stopping Distance

【Unity學習筆記】——使用unity自帶尋路系統進行尋路
【Unity學習筆記】——使用unity自帶尋路系統進行尋路

如果沒有player,點選哪就讓AI往哪尋路呢?

把下面腳本挂到Camera上,為AI添加NavMeshAgent元件,同樣需要烘焙一個NavMash

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;

public class RayTest : MonoBehaviour {

    private Ray ray;
    private RaycastHit hit;//射線碰到的碰撞資訊
    public GameObject navPlayer;//尋路的人
    private NavMeshAgent agent;

    private void Start()
    {
        agent = navPlayer.GetComponent<NavMeshAgent>();
    }

    private void Update ()
    {
        //射線起始位置
        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        if(Physics.Raycast(ray,out hit, 100) && Input.GetMouseButtonDown(0))
        {
            agent.SetDestination(hit.point);
            Debug.DrawLine(ray.origin, hit.point, Color.red);
        }
	}
}
           

繼續閱讀