导航系统的制作教学
地图的创建
首先在Unity中随便用一些物体(立方体)创造一个地形,例如:
地面最好用Terrain,自带碰撞体
创建时可以根据自己的创意加一些元素,比如跳跃、迷宫、或者自己喜欢的东西
注意:制作完后给所有的立方体都加上碰撞体
小人的创建
地图创建好之后我们用一个胶囊体代表人,放在地面上。
给胶囊体加上碰撞体和导航组件(NavMeshAgent)
人物上挂载移动代码
这里用到射线检测,可以理解为:从鼠标位置发射一道射线,照射到的第一个可被照射到的物体便是检测到的物体位置,也就是说点击哪里小人就会移动到哪里
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class RayMove : MonoBehaviour {
public NavMeshAgent nav;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if (Input.GetMouseButtonDown(0))
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray,out hit))
{
nav.SetDestination(hit.point);
}
}
}
}
注意:要在Unity中给人物身上的代码赋值,因为脚本中定义了一个公开的变量 nav
直接将刚刚创建的人物拖动进来
打开Navigation窗口
点击Window栏,打开下面的Navigation进行烘焙
打开窗口之后是这个样子
烘焙
选择地面并且点击Back面板中的back进行烘焙,成功之后会发现地面等可以走的地方都会变成蓝色,这样尝试运行一下就可以点击行走了,并且导航系统会自动寻找最短(耗能最少的)路线。
最后感谢大家支持
随后推出:导航系统(高级)