Unity 3D作业十:Navigation组件

前言

中山大学数据科学与计算机学院3D游戏课程学习记录博客。

学习内容

本次学习了Navigation组件,主要是学习了一部分简单的应用。
通过小实验的形式来记录本次学习的Navigation基本操作。
适合新手,简单易懂。

实验内容

1.构建实验对象
实验有一个正方体,一个长方体,一个球,一个平面,如下图:
在这里插入图片描述
要实现的是让绿色的球可以自动寻路,在平面上移动。但是不能穿过黄色的长方体。

2.添加组件Nav Mesh Agent
点击绿色小球,Add Component->Nav Mesh Agent,可以实现组件的添加。
因为只需要移动绿色小球,所以只在绿色小球上添加即可。

3.打开Navigation窗口
点击菜单栏Window->AI->Navigation可以打开,Navigation窗口如下:
在这里插入图片描述
主要需要用到Bake和Object两个属性。
Object是针对每一个对象的,下面红框的Sphere代表目前在操作小绿球。

本次实验主要是想让平面能走而黄色长方体不能走,所以需要对平面和长方体操作,进行如下操作:
在这里插入图片描述
长方体选择Not Walkable,表示不能通过。

平面选择Walkable,表示可以在平面上移动:
在这里插入图片描述
4.使用Bake
点击Bake,再点击Bake,可以生成移动范围:
在这里插入图片描述
生成移动范围如下图:
在这里插入图片描述
蓝色区域就是可以移动的范围。
可见平面区域都可以经过,但是黄色长方体是不能经过的。

5.挂载脚本
给绿色小球挂载如下脚本:

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

public class AIRoute : MonoBehaviour {
    private UnityEngine.AI.NavMeshAgent agent;
    void Start () {
        agent = GetComponent<UnityEngine.AI.NavMeshAgent>();
    }
    void Update () {
        RaycastHit hit;
        if(Input.GetMouseButton(0)){
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            if (Physics.Raycast(ray, out hit))
                agent.SetDestination(hit.point);
        }
    }
} 

6.运行效果
在这里插入图片描述

总结

简单的Navigation就是这么用的,更困难的应用,比如跳跃等,我还没有学会。
实在对跳跃行为有兴趣的,可以浏览师兄的博客:Unity3D学习(15)之Navmesh使用


版权声明:本文为weixin_43912333原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。