当前位置: 首页 > news >正文

网站网站做代理怎么发展下线门户网站框架下载

网站网站做代理怎么发展下线,门户网站框架下载,网站主视觉,软件定制开发服务流程Unity内置了一个比较完善的导航系统#xff0c;一般称为Nav Mesh#xff08;导航网格#xff09;#xff0c;用它可以满足大多数游戏中角色自动导航的需求。 一、导航系统相关组件 Unity的导航系统由以下几个部分组成#xff1a; Nav Mesh。Nav Mesh与具体的场景关联一般称为Nav Mesh导航网格用它可以满足大多数游戏中角色自动导航的需求。 一、导航系统相关组件 Unity的导航系统由以下几个部分组成 Nav Mesh。Nav Mesh与具体的场景关联它定义了场景中可以通过的三角面和非三角面的通路。Unity可以自动构建出Nav Mesh。Nav Mesh Agent。Nav Mesh Agent作为组件要挂载到需要自动导航功能的角色上它会为角色添加朝目标移动和避开障碍的功能。Nav Mesh Agent必须位于Nav Mesh之上才能发挥作用。Nav Mesh Obstacle。该组件将物体标记为障碍物如阻碍角色行动的木桶或箱子。障碍物有两种起效的途径一是动态障碍让Nav Mesh Agent利用规避算法尽可能规避它二是静态障碍静态障碍会在Nav Mesh上挖洞Nav Mesh Agent会围绕着这个洞修改寻路路径。如果障碍完全阻挡了路径那么Nav Mesh Agent会去寻找一条新的路径。Off Mesh Link。某些某些通路用普通方法无法通过但可能根据游戏设计是可以通过的。例如一条阻断了Nav Mesh的水沟在游戏中可以跳过去从较低的平台无法走上较高平台但可以通过梯子爬上去。导航系统允许在不连通的区域之间建立链接这种链接关系通过Off Mesh Link进行标记 解释静态、动态障碍的区别 在Unity中静态障碍和动态障碍是指在导航系统中所采用的两种不同类型的障碍物它们的区别主要体现在障碍物的移动性和对导航系统的影响。 1. 静态障碍Static Obstacles静态障碍物是指在游戏场景中位置不会发生改变的障碍物。它们通常是固定的环境元素如墙壁、建筑物等。静态障碍物在导航系统的计算和路径规划中不会发生变化只需要在初始化导航网格的时候标记出来即可。静态障碍物对导航系统的影响是恒定的不会引起额外的计算开销。 2. 动态障碍Dynamic Obstacles动态障碍物是指游戏场景中位置可能发生改变的障碍物。它们通常是动态的游戏角色、NPC、移动平台等。动态障碍物在导航系统中需要不断更新其位置信息以便导航系统能够实时地针对它们进行路径规划。动态障碍物的移动会影响导航网格的可行走区域导致导航系统需要重新计算路径。为了减少计算开销Unity的导航系统提供了一些优化技术如局部更新和动态避障等以提高动态障碍物的移动效率和导航性能。 总结来说静态障碍物是固定的对导航系统没有实时的影响而动态障碍物是可以移动的对导航系统的计算和路径规划有实时的影响需要特殊处理以保证角色可以正确避开它们。 二、构建导航网格  场景中的可移动区域一般包含了地形、平面、楼梯和斜坡等。要让导航系统自动处理这些地形必须要事先在几何地形上搜集数据预先计算参数确定好导航面才可以。从几何关卡创建Nav Mesh的过程称为导航网格Bake。 Unity有一个专门的Navigation窗口用于烘培操作其基本的烘培操作只需以下两个步骤 将所有场景中与导航有关的物体设置为Navigation Static。一般来说这些物体包含地形、平面、斜坡、楼梯、墙和静态障碍物但不应包含运动的物体。选中物体后单机Inspector右上角的小三角打开菜单可以看到Navigation Static选项。打开Navigation窗口选择主菜单的Window→AI→Navigation。然后打开其中的第三个标签页Bake再单击下方的Bake按钮即可开始烘培。如果场景小烘培会立即完成。烘培后可以看到但蓝色标记的可移动区域 有淡蓝色覆盖的部分就是可行走区域而且仔细观察可以看到一些连线这些连线把区域划分成了凸多边形与三角形。烘培时计算的主要信息正式这些凸多边形或三角形区域以及每个区域与周围区域的连通关系。 导航系统的工作机制介绍 在Unity官方文档中介绍了导航系统的工作原理配合烘培后的网格来看不难理解。导航系统负责的工作从烘培开始然后到具体的角色移动路线包括移动中避障到角色移动到目的地位置主要分为以下4个步骤 根据设置将地形或模型烘培形成用很多凸多边形表示的“小平面”。这其中用到的主要算法是三角形剖分算法。运行游戏时在制定了起点和终点后计算角色应当通过哪些面。这其中需要用到搜索算法如常用的A*。只有连通的平面的信息还不够还需要形成具体的路线。这里的算法主要考虑的是各种拐角尽可能按照距离最近而且平滑的路线移动不能让角色绕得太远。在具体移动的过程中还需要考虑躲避动态障碍物以及集体排队导航时互相阻挡得问题。 可以明显看到生成的导航区域在地图边缘、墙壁边缘都有一定收缩。这是因为Nav Mesh Agent可以理解为自动移动的角色本身具有一定的半径换句话说由于角色有一定体积角色的中心不可能紧贴在墙边。 不仅是宽度代理得高度也会影响哪些区域能够通过哪些不能通过甚至斜坡的坡度、楼梯的高度也对能否通过有影响。在Bake标签页中也可以对这些参数进行设置。 1、烘培设置——导航代理的尺寸  在导航系统的Bake标签页里可以看到一个尺寸示意图。 虽然导航代理与场景烘培是两个不同的模块但是Nav Mesh Agent的尺寸确实对烘培有影响因此在烘培阶段就应该给出代理的参考尺寸。相关参数及其解释如下 名称中文名称含义Agent Radius角色半径代理的半径如半径0.5m的角色无法通过宽度小于1m的通道Agent Height角色高度代理的高度代理无法通过低于此高度的通道Max Slope最大坡度代理无法登上角度大于此值的坡度Step Height台阶高度代理无法踏上高度大于此值的台阶Drop Height最大掉落高度与自动生成导航链接有关最大能从多高的高度跳下Jump Distance最远跳跃距离与自动生成的导航链接有关设定最远跳跃的距离 在修改这些参数时既要考虑到场景尺寸又要考虑到角色本身的尺寸包括角色碰撞体的尺寸。通过合理的设置让可导航的路线符合游戏设计的需要包括楼梯、坡道和通道等。 一般来说角色的碰撞体积是用胶囊体表示的这个胶囊体半径应该与代理半径一致或更小一些。例如碰撞体半径大于代理半径就可能出现导航系统认为能通过的窄路却被碰撞体阻挡的情况。再例如角色站立时有1.8m下蹲后可以通过0.9m的小洞那么导航参数夜莺岛考虑到角色下蹲移动的情况。 2、烘培数据文件 当烘培完成后再场景所在文件夹下会多出一个与场景名称相同的文件夹文件夹中有一个NavMesh.asset文件里面就是烘培保存的数据了。 三、创建导航代理 烘培好Nav Mesh后就可以添加Nav Mesh Agent了。Nav Mesh Agent也是一个组件它可调整的参数比较多。下面先做一个可以随鼠标点击移动的例子。 创建一个胶囊体代表玩家紧贴底面已经烘培好的导航面放置。给胶囊体添加Nav Mesh Agent组件默认参数即可。创建脚本MoveTo让物体向鼠标点击的位置移动。将脚本挂载到胶囊提上将摄像机升高并低头改为半俯视角。运行游戏通过鼠标左键单击地面胶囊体会朝着目标寻路移动。 using System.Collections; using System.Collections.Generic; using UnityEngine;public class MoveTo : MonoBehaviour {UnityEngine.AI.NavMeshAgent agent;void Start(){agent GetComponentUnityEngine.AI.NavMeshAgent();}void Update(){if(Input.GetMouseButtonDown(0)){Ray ray Camera.main.ScreenPointToRay(Input.mousePosition);RaycastHit hit;if(Physics.Raycast(ray,out hit)){agent.destination hit.point;}}} }在运行游戏的同时打开导航烘培窗口可以一边观察导航网格一边测试游戏从而方便观察前往不同目的地的导航效果差异。特别是当单机没有被导航网格覆盖的白色区域时物体依然会尽可能靠近目的地停留在接近目的地的位置。 以上脚本通过摄像机发射射线得到鼠标单击的位置。其操作导航代理的关键代码只有一条如下所示 agent.destinationhit.point; 只要设置了目的地导航就会自动朝目标移动。 关于Nav Mesh Agent组件还有很多值得说明的参数和使用方法。下面先介绍Nav Mesh Agent组件的参数再介绍Nav Mesh Agent组件的常用属性。 参数 说明名称中文名称说明位置Base Offset中心偏移代理中心与物体中心点的y轴偏差距离。由于代理会自动贴在导航面上移动如果有偏差就需要调节这个值。 Steering (运动和  转向) Speed移动速度导航移动的速度受到此参数限制Angular Speed角速度导航移动的转身速度Acceleration加速度模拟角色由慢到快的加速度Stopping Distance停止距离当离目标的距离小于此值时就算到达了。此值控制允许误差的范围Auto Braking自动刹车减速效果 Obstacle Avoidance (躲避障碍) Radius避障半径躲避障碍时的自身半径参考值较大的值代表尽可能远离障碍Height避障高度避障时自身高度的参考值Quality避障品质可调节避障算法的精度。精度越高效果越好对性能的影响也就越大Priority避障优先级当多个代理一起避障移动时数值小的代理优先级更高 属性 属性类型用途hasPathbool当前是否有路径。也可以根据它判断是否到达目的地isStoppedbool设置为true可以终止寻路pathNavMeshPath获得当前路径对象speedfloatNav Mesh Agent组件设置的速度其他参数也可以用脚本控制AngularSpeedfloatNav Mesh Agent组件设置的角速度remainingDistancefloat当前位置到终点的位置destinationVector3终点位置设置它可以启动寻路stoppingDistancefloatNav Mesh Agent组件的停止距离即误差距离isOnNavMeshbool是否处于导航面上velocityVector3代理当前实际运动的速度向量非常有用的属性 以上属性都可以通过脚本读取或设置 四、导航障碍物 静态障碍物如墙、水沟可以在烘培时就处理好而在场景中动态添加的障碍物就无法预先烘培了。Nav Mesh Obstacle组件正是为标记动态障碍物而生的。其属性如图所示。 Nav Mesh Obstacle组件刻修改的参数不多简单调整后即可使用。 障碍物的形状只有Box与Capsule两种。由于Nav Mesh Agent组件也有一定体积因此没有必要定义精确的形状。选择形状后可以分别对位置、大小和半径等参数进行提及设置。 障碍物的存在会对导航产生影响可选两种影响方式阻碍和打洞。不勾选Carve选项就是阻碍反之是打洞。 阻碍方式对导航层本身没有影响就像是地图上的普通障碍物一样Nav Mesh Agent组件会用规避算法尽量规避障碍物。阻碍方式的优点是不影响导航层没有重新计算导航层的性能开销缺点是规避效果取决于Nav Mesh Agent组件的具体移动当障碍物较多、障碍物体积较大时避障效果可能不会太理想。 打洞方式则会影响导航层本身的信息就像是障碍物呗烘培到导航层上一样。Nav Mesh Agent组件在计算路径的阶段就会避开有洞的位置。 可以创建两个Nav Mesh Obetacle测试勾选或不勾选Carve的效果。如图上边是勾选的下面是没有勾选的。 在开启导航窗口的情况下两个Nav Mesh Obstacle的影响的区别显而易见。如果移动设置为打洞的那个障碍物导航层会随之变化。 阻碍方式对性能影响较小适合有一定运动速度、体积不太大的物体。打洞方式会引起导航层局部从新计算带来一定的性能开销因此适合于静态的、长期的地形变化。 例如游戏中道路被掉落的石块堵死适合用打洞方式实现而角色过马路时路上的汽车等运动的小障碍适合用阻碍方式实现。 下面介绍一下自动打洞设置。 在实际游戏中障碍物的情况可能介于快速变化与静止不变之间因此障碍物还支持更细节的控制。通过判断物体移动的距离和静止不动的时间来确定打洞的时机这一功能是通过Move Threshold移动阈值、Time To Stationary(固定时间)和Carve Only Stationary仅固定时打洞3个参数实现的。简单来说在勾选了Carve Only Stationary的前提下当物体移动距离超过了Move Threshold的值则取消打洞当物体的静止时间超过了Time To Stationary的值就可以被看作暂时固定切换到固定状态时会进行打洞。 以上参数用文字解释比较抽象有一个好方法可以快速直观测试这些参数的作用。 在一个烘培好的地形上放置两个导航障碍物其中一个设置为打洞模式并勾选Carve Only Stationary另一个设置为阻碍模式作为对照。运行游戏在场景中移动打洞障碍物的位置当速度高于某个值时导航的孔洞就会消失当物体静止以后再经过一点时间孔洞又会出现。这里的速度阈值和静止时间正是由Move Threshold和Time To Stationary分别控制的。 这些参数与实际游戏设计相关只有在实际游戏开发中遇到了性能问题再仔细调整。通过这些参数可以控制大东的频率平衡性呢个与导航效果之间的矛盾。 五、导航链接 游戏中的角色不仅会平面移动、爬楼梯和斜坡有时还会跳跃甚至瞬间移动。一旦有跳跃等情况直接结果就是导航中会出现一些特例。第一种情况是走捷径如角色不用走楼梯下楼直接从二楼跳下更快。第二种 情况是直接跨越两个独立的导航面走过导航面不连通的路径。 这种在原有导航面基础上添加的路径或捷径就是导航链接。如Unity支持自动生成导航链接和手动生成导航链接下面分别简述其制作方法。 1、自动生成导航链接 自动生成导航链接非常容易先将所有静态导航物体设置为“可生成链接”再在烘培窗口中设置角色的最大下落高度、最大跳跃距离最后重新烘培即可其具体操作如下。 打开Navigation窗口的Object标签页这个页面实际上是一个场景物体的过滤器方便过滤和选择物体如筛选所有具有网格渲染器的物体或所有具有地形组件的物体。无论是否过滤只要在场景中选中所有需要生成导航链接的物体即可。例如可以将前面所有设置为Navigation Static的物体选中然后再在标签页中勾选Generate OffMeshLinks完成之后回到Bake标签页设置角色最大Drop Height和最远Jump Distance。为了效果明显可以将它们的值设置得大一些完成之后再次烘培烘培结果中会出现很多小箭头每个箭头都代表着一处导航链接。 2、手动生成导航链接 自动生成导航链接很方便但不易控制很容易生成大量链接。如果仅在个别地方需要链接建议手动生成导航链接。手动操作的方法很简单步骤如下 为了方便起见新建一个空物体位置归0新建两个物体作为其子物体这里分别命名为NodeA和NodeB给父物体添加Off Mesh Link组件Start设置为NodeAEnd设置为NodeB完成之后只要修改物体NodeA和NodeB的位置就可以控制导航链接的位置了。为了方便查看和修改可以在移动物体时打开Navigation窗口这样就可以看到表示链接的箭头 这样生成的链接使用时与自动生成的链接没有区别。 Off Mesh Link组件还有一个Bi Directional选项。勾选它表示既有正向链接也有反向链接不勾选代表单向链接只能从起点到终点不能返回。
http://www.pierceye.com/news/380186/

相关文章:

  • 发优惠券网站怎么做大连开发区做网站
  • 烟台免费网站建设宝应网站开发
  • 用网站做淘宝客的人多吗3liang 设计网站 源码
  • 实训小结网站建设国内外最新新闻
  • 最新网站排名优化方法云龙徐州网站开发
  • 扬州做网站多少钱免费拿货的代理商
  • html做校园网站服装设计图片
  • 做三网站推广一般给多少钱
  • 网站关键词的写法牛肉煲的做法
  • 网站权限怎么设置吉林电商网站建设报价
  • wordpress修改站点名wordpress 插件 调用
  • vs2015做的网站广东省白云区属于哪个市
  • 微信群投票网站怎么做佳木斯做网站公司
  • 建设网站用哪个主机好阳西哪里有做网站
  • 沈阳市有做网站的公司中文企业网站html模板
  • 破解织梦做的网站有什么页游传奇平台好
  • 临安网站开发网站建设做什么费用
  • 辽宁建设工程信息网网站python 网站开发
  • 企业网站.net免费做ppt的网站
  • 浦城 做网站wordpress下载页面
  • 广西住房城乡建设部网站网站优化怎么看
  • 网站建设负责人证明网络营销的10个特点
  • 泉州市服务好的网站设计塘沽网吧开门了吗
  • 商城网站建设哪家公司好wordpress输出到模板
  • 建站报价网站建设培训学校
  • 杭州高端网站定制手机网站开发应注意
  • 深圳网站建设选云聚达做二手元器件那个网站查价格
  • 网站建设公司企业模板微网站开发制作
  • 北京网站制作计划合理的网站结构
  • 网站建设如何搭建框架兰州seo排名