Unity2019_経路探索システム

簡易ナビゲーションウェイファインディング機能

静的グリッド ナビゲーションとして選択されました

Windows======>Ai========>ナビゲーション、「ベイク」をクリック

ナビゲーション グリッド コンポーネントをキャラクターにぶら下げる

 スクリプトを終了し、マウスのクリック位置をナビゲーションの終点として設定します。

using UnityEngine;
using UnityEngine.AI;

public class PalyerMovement : MonoBehaviour {

    private NavMeshAgent agent;

    void Start()
    {
        //获取角色上的NavMeshAgent组件
        agent = GetComponent<NavMeshAgent>();
    }

    void Update()
    {
        //鼠标左键
        if (Input.GetMouseButtonDown(0))
        {
            //射线检测
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            bool isCollider = Physics.Raycast(ray, out hit);
            if (isCollider)
            {
                //hit.point射线触碰的Position
                //SetDestination设置下一步的位置
                agent.SetDestination(hit.point);
            }
        }
    }
  
}

ナビゲーションパネルのパラメータ

ベーキング

 

 エリアの背後にはコストがあり、それが最適なルートを選択する際の重みとなります。

 次のルートは近いですが比重が高いです。

 ジャンプの高さと距離の影響

 

 動的障害物

ナビゲーショングリッドプロキシコンポーネント、自動ブレーキ

動的遮断コンポーネント、動的に障害物を設定し、切断コンポーネントを確認します

分割グリッドジャンプライン

建物から飛び降りる、溝に飛び込む、ドアを開けて通過するなど、直接歩くことができないグリッド サーフェス上でナビゲーション グリッド リンクを実行するために使用されます。

ある点から別の点へジャンプする

現場の地面を確認する必要がある

 開始点と終了点を設定する

実行時のナビゲーション メッシュの動的ベイク処理

以下のフォルダをプロジェクトにコピーして使用してください

再焼きが必要です

 

 右クリックしてマップ上に立方体を生成し、レンダリングします。

using UnityEngine;
using UnityEngine.AI;
//右键在场景中新建一个Cube,重新烘焙导航网格
public class BuildNavMesh : MonoBehaviour {
    public GameObject buildPrefab;
    private NavMeshSurface surface;

	void Start ()
    {
        surface = GetComponent<NavMeshSurface>();
    }
	
	void Update () 
    {
        // 鼠标右键点击
        if (Input.GetMouseButtonDown(1))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            bool isCollider = Physics.Raycast(ray, out hit);
            if (isCollider)
            {
                GameObject go = Instantiate(buildPrefab, hit.point, Quaternion.identity);
                go.transform.SetParent(this.transform);
                // 生成完之后立即重新烘培场景
                surface.BuildNavMesh();
            } 
        }
    }
}

ナビゲーション グリッド コンポーネントをプレハブに追加し、シーンにドラッグしてグリッド コンポーネントを取り込むこともできます。

 

おすすめ

転載: blog.csdn.net/qq_35647121/article/details/123724243