Jenner's Blog

不变秃,也要变强!

0%

自动寻路

寻路方法

NavMesh

A*
itween

网络方案

服务器寻路,客户端寻路,客户端寻路服务器校验。

建模

Grid
Waypoint
NavMesh

NavMesh

官方内置的寻路插件,三角网格寻路。
步骤:

  1. 创建地形,添加角色,添加障碍物(需要有Mesh Render)
  2. 选中地形和各种物体,在Navigation窗口中,设置Navigation Static,设置Area的Cost
  3. Navigation窗口中,选择Bake(烘焙)界面,点击Bake按钮,进程场景烘焙,就可以烘焙出寻路网格了
  4. 为角色添加NavMeshAgent组件
  5. 为角色新增一个脚本PlayerController.cs,agent.SetDestination()设置目标,实现点击目标,自动寻路功能

    agent属性

    Radius 半径: 代理的半径(仅用于寻路目的,可以跟实际对象的半径大小不一样,一般比实际对象的半径大)。
    Speed 速度: 代理可以周游世界,走向它的目的地的最大移动速度。
    Acceleration 加速度: 最大加速度。
    Angular Speed 角速度: 最高转速(度/秒)。
    Stopping distance 制动距离:制动距离。到目的地的距离小于这个值,代理减速。
    Auto Traverse OffMesh Link 自动遍历OffMesh链接:自动移动并关闭OffMeshLinks
    Auto Repath 自动重新寻路:如果现有的部分已失效,获得新的路径。
    Height 高度:代理的高度(用于调试图形)。
    Base offset 基本偏移:碰撞几何体相对于实际几何体垂直的偏移。
    Obstacle Avoidance Type 障碍躲避类型 :躲避的质量水平。
    NavMesh Walkable 导航网格行走:指定代理可以遍历的导航网格层类型。

OffMeshLinks:Off Mesh Link组件用于手动指定路线来生成分离的网格连接。例如,游戏中让行进对象上下爬梯子到达另一块网格的情景就是利用生成分离的网格连接来实现的。例如爬梯子,梯子就需要设置该组件,达到两个网格间的连接。
另外,在烘焙过程中是否自动生成分离的网格链接还取决于导航烘焙 (Bake选项卡) 设置中的跳跃距离 (Jump distance) 和下落高度 (Drop height) 属性。

A*

使用AStar插件,步骤:

  1. 在移动对象挂AIFollow.cs脚本,再添加了这个脚本之后,它会自动帮你添加上Character Controller和Seeker脚本,同时,在该对象上再添加上Funnel Modifier.cs,Simple Smooth Modifier.cs,Navmesh Controller.cs这三个脚本。
    其主要脚本就是AIFollow.cs这个脚本。其Target就是你的目的地。
  2. 接下来在场景中建一个空对象,挂上Astar Path.cs脚本,选择RecastGraph选项。Cell Size变量跟你障碍物之间间隙有关,当你的障碍物之间间隙比较小的时候,建议这个值设小一点,下面是一些可走区域的高度,攀爬高度,以及对象半径等参数,下面可以设置区域的坡度,Max Edge Length这个参数跟你线的复杂度有关,最小可设置到0.05,当然数据特别小的时候,线圈布局很繁忙,很耗资源,一般设置几百就好了,效果可以自行调节调试。设置完成之后可以点击一下Snap bounds to scene,来规定界限。也可以自己微调其区域大小和位置。

iTween/DoTween

iTween和DoTween实际上是动画插件,需要手动设置路径点。属于WayPoints方法。

路径渲染

LineRenderer

SetPositions设置路径上的点。

属性

Cast Shadows:线是否投射阴影。
Receive Shadows:线条是否接收阴影。
Motion Vectors:运动轨迹。
Camera Motion Only 只有相机移动
Per Object Motion 每一个对象移动也会跟着移动
Force No Motion强制移动
Materials:线的材质。
Light Parameters:光照贴图参数,使该线与全局照明系统交互。
Use World Space:如果启用,则这些点将被视为世界空间坐标,而不是受此组件所附加的GameObject的变换影响。
Loop:启用此选项可连接线路的第一个和最后一个位置。这形成了一个闭环。
Positions:要连接的Vector3点数组。
Width:定义宽度值和曲线(控制线在其开始和结束之间的各个点处的宽度。曲线仅在每个顶点处采样,因此其精度受到线中存在的顶点数量的限制。线的总宽度由宽度值控制。)
Color:定义渐变以控制线条沿其长度的颜色。
Corner Vertices:增加此值可使线条边角显得更圆。
End Cap Vertices:增加此值可使线条显示更圆。
Alignment:对齐方式。
Texture Mode:添加线条纹理。
Shadow Bias:沿着光的方向移动阴影,以通过使用广告牌几何体近似体积来消除阴影瑕疵。
Generate Lighting Data:如果启用(选中该框),则使用包括法线和切线构建线几何。这允许它使用使用场景的材质照明,例如通过标准着色器,或使用自定义着色器。
Sorting Layer:渲染器的排序图层的名称。
Order in Layer:此渲染器在排序图层中的顺序。
Light Probes:基于探测器的光照插值模式。
Reflection Probes:如果启用并且场景中存在反射探测,则会为此线渲染器拾取反射纹理并将其设置为内置的着色器均匀变量。

点击下方打赏按钮,获得支付宝二维码