unity學習,希望我的博客能給喜歡unity的朋友帶來幫助
自動尋徑指的就是點擊場景上的一個位置,角色就會自動尋路過去。中間可能會有很多的障礙物,角色會自動繞過障礙物,最終達到終點。
Navigation:定位,導航
首先先來實現巨魔自動尋徑的功能,先在視圖中創建地形和障礙物(障礙物可以用cube來代替),然後倒入巨魔。然後點擊window---Navigation,這樣在屬性欄的旁邊就會出現Navigation欄。然後設置各個物體的屬性:
地面和障礙物:
然後烘培尋路網格:
巨魔:
最後給巨魔添加腳本,代碼如下:
- NavMeshAgent agent;
- void Start() {
- agent = GetComponent<NavMeshAgent>();
- }
- void Update() {
- RaycastHit hit;
- if (Input.GetMouseButtonDown(0)) {
- Ray ray =Camera.main.ScreenPointToRay(Input.mousePosition);
- if (Physics.Raycast(ray, out hit)){
- agent.SetDestination(hit.point);
- }
- }
- }
還可以實現巨魔的走和跑,在代碼中添加:
- Animator anim;
- void Start() {
- anim = GetComponent<Animator>();
- }
- void Update() {
- if (agent.remainingDistance == 0)
- {
- AnimationToIdle();
- }
- else
- {
- AnimationToWalk();
- }
- }
- public void AnimationToIdle(){
- anim.SetFloat("idle", 1F);
- anim.SetFloat("walk", 0.0F);
- anim.SetFloat("run", 0F);
- }
- public void AnimationToWalk(){
- anim.SetFloat("run", 0.0F);
- anim.SetFloat("idle", 0F);
- anim.SetFloat("walk", 1.0F);
- }
- }
最後把腳本拖放到巨魔上。
寵物跟隨
在遊戲中,主角的身邊總是跟着自己的魔寵,我們也來實驗一下,下面我用球來代替魔寵。
代碼如下:
- public Transform target;
- private NavMeshAgent agent;
- void Start () {
- agent = GetComponent<NavMeshAgent>();
- }
- void Update () {
- if (target!= null) {
- agent.destination=target.position;
- }
- }
把腳本拖放到魔寵上,並且給魔寵添加NavMeshAgent
設置障礙物
如圖,在添加一個cube充當障礙物
設置cube的屬性:
這樣在巨魔到達障礙物時就走不過去。
高空下落
遊戲中經常有從山上或者是牆上跳下的人物,我也來實驗一下這功能。
選中要跳落的地點,點擊障礙物,在右側欄中進行設置:
設置完成後出現如下場景:
尋路網格層
把Navigation裏面Bake的Drop Height的值設爲0,取消勾選Navigation裏面Object的OffMeshLink Generatic,點擊Bake;
在Navigation裏面Layers創建兩個Layers(LayersUp,LayersDown)-->Bake
設置巨魔屬性:
一定要注意,創建了兩個Layers,選中兩條路徑,所選的路徑的Navigation裏面的Navigation Layer也要改變:
這樣才能實現巨魔有選擇性的尋路。
NavMeshAgent屬性解釋:
更多精彩請點擊 http://www.gopedu.com/article