前言
中山大学数据科学与计算机学院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版权协议,转载请附上原文出处链接和本声明。