unity3d 如何动态寻路?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了unity3d 如何动态寻路?相关的知识,希望对你有一定的参考价值。
现在想做一个游戏,地图是随机生成的,障碍物也是随机的,现在要让敌人有寻路功能。但是unity3d自带的Navmesh寻路需要事先烘焙场景,所以不能达到理想效果。
求能满足需求的寻路插件啊!
地图是动态生成的,一开始场景里除了UI什么都没有。单独加敌人碰到障碍物的行为判断不就是等于自己重新写一个寻路AI吗,水平不够……
Unity3D_(网格导航)简单物体自动寻路
NavMesh(导航网络)是3D游戏世界中用于实现动态物体自动寻路的一种技术,它将游戏场景中复杂的结构组织关系简化为带有一定信息的网格,进而在这些网格的基础上通过一系列的计算来实现自动寻路。
实现Capsule自动向Sphere寻路:
实现过程:
一、搭建场景
选择菜单栏中GameObject->3D Object->Cube命令,在场景中创建三个Cube,并分别命名为Cube01(平台)、Cube02(斜面)、Cube03(地面)
三个Cube参数值设置如下
Cube01(平台)、Cube02(斜面)、Cube03(地面)
设置完成图:
二、功能实现
1、分别选中三个Cube对象,分别单机Inspector试图右上角Static项右侧按钮,在弹出下拉列表中选中Navigation Static复选框,Unity就会利用这几个Cube对象来生成导航网络
2、选择菜单栏中的Window->Navigation命令,弹出Navigation试图,单机Navigation试图右下角Bake按钮生成导航网络
其中蓝色网格便是目标角色在自动寻路时可以到达的区域
三、添加目标对象
1、新建一个Capsule(胶囊体),Scale设置为(0.2,0.2,0.2)作为移动的角色(放的位置可以随意)
新建一个Sphere(球体),Scale设置为(0.1,0.1,0.1)作为目的的角色(放的位置可以随意)
选中Capsule(胶囊体),选择菜单栏中的Component->Navigation->Nav Mesh Agent命令,为Capsule对象添加导航组件。添加成功后,Capsule上会出现绿色包围的圆柱框
四、实现Capsule(胶囊体)自动寻找Sphere目标点
选择菜单栏中Assets->Create->C# Script,编写RunTest脚本
using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.AI; public class RunTest : MonoBehaviour { public Transform TargetObject; // Use this for initialization void Start () { if (TargetObject != null) GetComponent<NavMeshAgent>().destination = TargetObject.position; } // Update is called once per frame void Update () { } }
讲将本绑定到Capsule上,并将Sphere物体绑定到Inspector试图中Capsule物体脚本组件中的TargetObject项上
运行程序就可以实现简单的自动寻路的效果
以上是关于unity3d 如何动态寻路?的主要内容,如果未能解决你的问题,请参考以下文章
unity3d鼠标点击地图自动寻路,如何让点击场景和小地图都能自动寻路。
Unity3D插件A*Pathfinding插件分享《A*寻路插件》