1. 程式人生 > >unity3d開發2d遊戲:自動尋路Navmesh入門

unity3d開發2d遊戲:自動尋路Navmesh入門

  現在的大部分mmo遊戲都有了自動尋路功能。點選場景上的一個位置,角色就會自動尋路過去。中間可能會有很多的障礙物,角色會自動繞過障礙物,最終達到終點。使用unity3d開發2d遊戲,自動尋路可以有很多種實現方式。第一種比較傳統的是使用A星尋路,它是一種比較傳統的人工智慧演算法,在遊戲開發中比 較常用到。大部分的頁遊和端遊都用到這種技術。在Unity遊戲也可以用這種技術,Asset Store上面已經有相關的元件了,感興趣的同學可以自己去了解。我在後面有機會再來詳細介紹了。今天我們來學習Unity官方內建的尋路外掛 -Navmesh。由於內容比較多,我們將分幾次來系統學習。今天先通過學習一個最簡單的例子來入門unity3d開發2d遊戲。

  例項

  我們要實現一個功能:點選場景中的一個位置,角色可以自動尋路過去。角色會繞過各種複雜的障礙,找到一條理論上”最短路徑“。

  步驟

  1.建立地形

  2.新增角色

  3.建立多個障礙物,儘量擺的複雜一點,來檢查Navmesh的可用性和效率。

  4.選中地形,在Navigation視窗中,設定Navigation Static

  5.依次選中障礙物,在avigation視窗中,設定Navigation Static

  7.Navigation視窗中,選擇Bake(烘焙)介面,點選Bake按鈕,程序場景烘焙,就可以烘焙出尋路網格了

  8.為角色新增NavMeshAgent元件。Component->Navigation->Nav Mesh Agent

  9.為角色新增一個指令碼PlayerController.cs,實現點選目標,自動尋路功能

  using UnityEngine;

  using System.Collections;

  //Author:[email protected]

  public class PlayerController : MonoBehaviour

  {

  private NavMeshAgent agent;

  void Start()

  {

  //獲取元件

  agent = GetComponent();

  }

  void Update()

  {

  //滑鼠左鍵點選

  if (Input.GetMouseButtonDown(0))

  {

  //攝像機到點選位置的的射線

  Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

  RaycastHit hit;

  if (Physics.Raycast(ray, out hit))

  {

  //判斷點選的是否地形

  if (!hit.collider.name.Equals("Terrain"))

  {

  return;

  }

  //點選位置座標

  Vector3 point = hit.point;

  //轉向

  transform.LookAt(new Vector3(point.x, transform.position.y, point.z));

  //設定尋路的目標點

  agent.SetDestination(point);

  }

  }

  //播放動畫,判斷是否到達了目的地,播放空閒或者跑步動畫

  if (agent.remainingDistance == 0)

  {

  animation.Play("idle");

  }

  else

  {

  animation.Play("run");

  }

  }

  }

  完成了!這個unity3d開發2d遊戲例項可以很簡單的讓我們學會如何最基本的使用自動尋路元件Nav。但是,這個元件還提供了更加強大的功能,比如,起始點和目標點中間出現阻斷了,

相關推薦

unity3d開發2d遊戲自動Navmesh入門

  現在的大部分mmo遊戲都有了自動尋路功能。點選場景上的一個位置,角色就會自動尋路過去。中間可能會有很多的障礙物,角色會自動繞過障礙物,最終達到終點。使用unity3d開發2d遊戲,自動尋路可以有很多種實現方式。第一種比較傳統的是使用A星尋路,它是一種比較傳統的人工智慧演

Unity手遊之自動Navmesh入門

現在的大部分mmo遊戲都有了自動尋路功能。點選場景上的一個位置,角色就會自動尋路過去。中間可能會有很多的障礙物,角色會自動繞過障礙物,最終達到終點。使用Unity來開發手遊,自動尋路可以有很多種實現方式。第一種比較傳統的是使用A星尋路,它是一種比較傳統的人工智慧演算法,在遊

Unity3D開發敵人自動攻擊和自動

簡介:當製作動作類攻擊遊戲時,會用到敵人的自動攻擊及自動尋找攻擊目標,如何實現自動攻擊和自動尋路呢?下面簡單的講解我對這方面的理解。 當你已經匯入了敵人的模型並製作好了敵人動畫控制狀態機,接下來

Unity3D+免費工具開發2D遊戲之一工具和外掛介紹

該系列講座一共有五節: 第一節 工具和外掛介紹 第二節 製作關卡1的介面 第三節 建立人物動畫 第四節 建立計分介面 第五節 製作AI敵人 通過這些講解,我們將重建一個非常經典的遊戲Lode Runner。在本節中,我將介紹一些我們需要用到的免費工具和外掛,以及如何

Unity3D——學習分享(十四)實現自動

為了使遊戲增加更多的可玩性,自動尋路功能已經是遊戲中不可或缺的功能了。比如絕地求生中的人機自動尋找目標等。今天分享一個簡單的自動尋路的實現,通過這節的學習,應該會對尋路有更多的瞭解,就可以嘗試更加深層次的尋路功能的實現啦。 1. 先建立一個簡單的場景 2.將Ground(即建立

unity3d自帶NavMesh

靜態烘焙: 動態障礙物,大小要和包圍盒大小一致 動態烘焙中的障礙物 要掛載在mesh上 [MenuItem("HomeTool/AddNavTag")] public static voi

Unity3D 利用character controller控制人物在場景中移動和利用Navmesh Agent設定人物自動

考慮碰撞的情況下控制人物的行走 在考慮碰撞的情況下,控制人物在場景中移動一般有兩種方法,一種是利用剛體Rigidbody,然後通過施加力或者改變速度來控制人物的移動,另外一種方法就是利用unity自帶的character controller來方便的呼叫函式直

Unity3D自動的跳躍

《【Unity3D】自動尋路》(點選開啟連結)萬般好,但鎖死Y軸這點導致非常蛋疼的一個問題,我需要在自動尋路的過程允許遊戲主角進行跳躍。畢竟玩家都說了,在3D遊戲裡面不讓主角跳躍是一個很嚴重的問題,就像《阿瑪拉王國》本來做得非常好,但就是不能跳,導致大打折扣。那麼如果在Un

淺析Unity3D開發遊戲如何降低包體大小

眾所周知,通過Unity3D開發的手遊包體普遍偏大,動則幾百M的安裝包,而包體大則會導致手遊推廣的成本增大,也會影響到使用者轉化率。除去其他因素,使用者在選擇下載時,會著重關注遊戲包體大小,遊戲包體體積過大,下載時間長,會讓使用者取消下載,同時也會考慮到流量的問題。

Unity3D中的自動

Unity3D中自動尋路的功能: 概述: 別人寫的教程,非常詳細,細節我就不贅述了。只寫一些自己的總結: 1. 什麼是導航網格: “導航網格”,規定了使用自動尋路的GameObject所能或者不能通過的地方。 2. 如何生成導航網格: 選單欄: Window——Naviga

淺談遊戲自動A*演算法

 尋路是遊戲中非常重要的一個元素,如何找到一條最短的路徑是程式需要設計的演算法,現在最為流行的尋路演算法是A*演算法。A*演算法與狀態空間搜尋結合的相當緊密。     狀態空間搜尋,就是將問題求解的過程表現為從初始狀態到目標狀態尋找這個路徑的過程,通俗的說就是在解一個問題的

Unity3d NavMeshAgent自動元件

我們常見的有三種尋路方式 1.路點尋路 2.單元格尋路 3.網格尋路 簡單介紹一下 1.路點尋路 如下圖,物體從 point位置出發依次經過(point1 、point2、point3、point4、point5)進行移動 程式碼如下 using System.Colle

Unity3D開發2D遊戲——簡單控制物體移動

在Unity3D中開發2D遊戲簡單實現物體的上下左右移動1.簡單實現物體的上下左右移動(左前右前)掛到物體下(本人學習過程中所記筆記 給像我一樣的新人提供方便)2.如何正確顯示物體移動時方向定義public精靈陣列tankSprite[]實現按下方向鍵同時顯示物體的正確方向

A*算法之在U3d下實現簡單的自動

engine ati mat param erp ane 自動尋路 lose var 前言: 算法簡介:   A*搜尋算法俗稱A星算法。A*算法是比較流行的啟發式搜索算法之一,被廣泛應用於路徑優化領域[。它的獨特之處是檢查最短路徑中每個可能的節點時引入了全局信息,對當前節點

人工智能: 自動算法實現(四、D、D*算法)

ali html 速度 狀態 算法 http all gin ogr 博客轉載自:https://blog.csdn.net/kongbu0622/article/details/1871520 據 Drew 所知最短路經算法現在重要的應用有計算機網絡路由算法,機器人探路,

【SIKIA計劃】_05_Unity5.3開發2D遊戲筆記

一.介面基本操作   01.Project基本分類 【Audios】音效 【Material】材質 【Prefabs】預製 【Scenes】場景 【Scripts】指令碼 【Sprites】精靈   02.Project丶圖片屬性

unity 自動

在專案開發中有時候,會用到unity自帶的自動尋路系統NavMesh,今天就說下他的簡單用法,NavMesh就是將遊戲場景中複雜的結構組織關係簡化為帶有一定資訊的網格,進而在這些網格的基礎上通過一系列的計算來實現自動尋路,在導航中,只需要給導航物體掛載到導航物體上,導航物體便

自動NavMeshAgent u3d學習總結筆記本

1、Agent Size 物體尺寸控制    Radius 物體的半徑    Height 物體的高度    Base Offset 物體的上下偏移  2、Steering 行動控制    Spped 物體移動的最大速度    Angular Speed 物體轉向時的角速度    Acceleration 物

Unity-Slua使用MVC設計思想開發2D遊戲

        架構是神奇的,為解決需求頻繁變更可以更好的應對。設立規則,開發人員共同去遵守,約定俗成,從而完成一個維護性強的產品;架構也是抽象的,將設計模式作為元件實現一個高內聚、低耦合的適合於產品的流程。         設計架構是為解決某種問題而生的,最重要的還是思想。

Unity射線&自動/右鍵點選某一點會使物體跟隨至滑鼠點選位置/計算目標物體距離滑鼠點選位置的距離

public class MyRay : MonoBehaviour { public GameObject GameObject;//要例項化的物體 粒子特效 public GameObject Player; // private Animation ani; priva