关于NavMeshAgent 为什么都不能vue 获取组件实例这个组件

下次自动登录
现在的位置:
& 综合 & 正文
Unity手游之路自动寻路Navmesh之入门
现在的大部分mmo游戏都有了自动寻路功能。点击场景上的一个位置,角色就会自动寻路过去。中间可能会有很多的障碍物,角色会自动绕过障碍物,最终达到终点。使用Unity来开发手游,自动寻路可以有很多种实现方式。第一种比较传统的是使用A星寻路,它是一种比较传统的人工智能,在游戏开发中比较常用到。大部分的页游和端游都用到这种技术。在Unity游戏也可以用这种技术,Asset Store上面已经有相关的组件了,感兴趣的同学可以自己去了解。我在后面有机会再来详细介绍了。今天我们来学习Unity官方内置的寻路插件-Navmesh。由于内容比较多,我们将分几次来系统学习。今天先通过学习一个最简单的例子来入门。
(转载请注明原文地址)
我们要实现一个功能:点击场景中的一个位置,角色可以自动寻路过去。角色会绕过各种复杂的障碍,找到一条理论上”最短路径“。
1.创建地形2.添加角色3.创建多个障碍物,尽量摆的复杂一点,来检查Navmesh的可用性和效率。4.选中地形,在Navigation窗口中,设置Navigation Static5.依次选中障碍物,在avigation窗口中,设置Navigation Static7.Navigation窗口中,选择Bake(烘焙)界面,点击Bake按钮,进程场景烘焙,就可以烘焙出寻路网格了8.为角色添加NavMeshAgent组件。Component-&Navigation-&Nav Mesh Agent9.为角色新增一个脚本PlayerController.cs,实现点击目标,自动寻路功能
完成了,可以看看效果:
1.角色身上的Nav Mesh Agent 组件Radius 半径: 代理的半径(仅用于寻路目的,可以跟实际对象的半径大小不一样,一般比实际对象的半径大)。Speed 速度: 代理可以周游世界,走向它的目的地的最大移动速度。Acceleration 加速度: 最大加速度。Angular Speed 角速度: 最高转速(度/秒)。Stopping distance 制动距离:制动距离。到目的地的距离小于这个值,代理减速。Auto Traverse OffMesh Link 自动遍历OffMesh链接:自动移动并关闭OffMeshLinksAuto Repath 自动重新寻路:如果现有的部分已失效,获得新的路径。Height 高度:代理的高度(用于调试图形)。Base offset 基本偏移:碰撞几何体相对于实际几何体垂直的偏移。Obstacle Avoidance Type 障碍躲避类型 :躲避的质量水平。NavMesh Walkable 导航网格行走:指定代理可以遍历的导航网格层类型。这个参数很有用,在接下来的实例中可以用到。2.障碍物一定要有Mesh Render,用于烘焙寻路网格。
这个实例可以很简单的让我们学会如何最基本的使用自动寻路组件Nav。但是,这个组件还提供了更加强大的功能,比如,起始点和目标点中间出现阻断了,怎么办?在下面的文章中,我们将会继续探寻其他强大的功能。
2.http://liweizhaolili./
3./Components/class-NavMeshAgent.html
&&&&推荐文章:
【上篇】【下篇】4382人阅读
unity3d(19)
& & & & & & & & & & & & & & & & & & & & NavMeshAgent 寻路导航组件
地面的烘焙方法
1.选中要导航的模型 或者 地面
2.在右边Inspector面板右上角Static旁边的倒三角
,选中 Navigation static 勾,& 表示地面导航层 ,把当前选中物体设置为导航层
3.菜单栏Window -&Navigation ,Inspector面板 右下角 Bake烘焙,生成导航路径数据
4.然后要移动的角色身上添加 NavMeshAgent组件,就可以导航移动角色
NavMeshAgent 组件面板属性
& & Base offset & & & & & & & &与地面偏移高度
& & speed & & & & & & & & & & & &移动速度
& & Angular Speed& & & & & & &转角速度 ,转身速度& & 角速度: 最高转速(度/秒)。
& & Acceleration & & & & & & & & 加速度,启动时的 最大加速度。
& & Stopping Distance& & & & &停止距离 ,,制动距离:制动距离。到目的地的距离小于这个值,代理减速。
& & Auto Traverse OffMesh Link 自动遍历OffMesh链接:自动移动并关闭OffMeshLinks
& & Auto Repath & & & & & & & & 自动重新寻路:如果现有的部分已失效,获得新的路径。
& & Height & & & & & & & & & & & & 高度:代理的高度(用于调试图形)。
& & Base offset & & & & & & & & & 基本偏移:碰撞几何体相对于实际几何体垂直的偏移。
& & Obstacle Avoidance Type 障碍躲避类型 :躲避的质量水平。
& & NavMesh Walkable & & & & &导航网格行走:指定代理可以遍历的导航网格层类型。这个参数很有用,在接下来的实例中可以用到。
所有NavMeshAgent
函数和变量翻译
NavMeshAgent.acceleration 加速度
NavMeshAgent.ActivateCurrentOffMeshLink 激活当前分离网格链接
NavMeshAgent.angularSpeed 角速度
NavMeshAgent.areaMask 区域遮挡
NavMeshAgent.autoBraking 自动制动
NavMeshAgent.autoRepath 自动重新获取路径
NavMeshAgent.autoTraverseOffMeshLink 自动穿过OffMeshLink
NavMeshAgent.avoidancePriority 逃避优先级
NavMeshAgent.baseOffset 基础偏移
NavMeshAgent.CalculatePath 计算路径
pleteOffMeshLink 完成分离网格链接
NavMeshAgent.currentOffMeshLinkData 当前关闭网格连接数据
NavMeshAgent.desiredVelocity 需求速度
NavMeshAgent.destination 目的地
NavMeshAgent.FindClosestEdge 寻找最近边缘
NavMeshAgent.GetAreaCost 获取区域成本
NavMeshAgent.hasPath 有路径
NavMeshAgent.height 高度
NavMeshAgent.isOnNavMesh 是否在导航网格上
NavMeshAgent.isOnOffMeshLink 是否在OffMeshLink上
NavMeshAgent.isPathStale 是否是旧路径
NavMeshAgent.Move 移动
NavMeshAgent.nextOffMeshLinkData 下一个OffMeshLink数据
NavMeshAgent.nextPosition 下个位置
NavMeshAgent.obstacleAvoidanceType 障碍逃避类型
NavMeshAgent.path 路径
NavMeshAgent.pathPending 路径等待
NavMeshAgent.pathStatus 路径状况
NavMeshAgent.radius 半径
NavMeshAgent.Raycast 射线投影
NavMeshAgent.remainingDistance 剩余距离
NavMeshAgent.ResetPath 重新设置路径
NavMeshAgent.Resume 恢复
NavMeshAgent.SamplePathPosition 样本路径位置
NavMeshAgent.SetAreaCost 设置区域成本
NavMeshAgent.SetDestination 设置目的地
NavMeshAgent.SetPath 设置路径
NavMeshAgent.speed 速度
NavMeshAgent.steeringTarget 转向目标
NavMeshAgent.Stop 刹车
NavMeshAgent.stoppingDistance 刹车距离
NavMeshAgent.updatePosition 更新位置
NavMeshAgent.updateRotation 更新旋转
NavMeshAgent.velocity 速度
NavMeshAgent.Warp 弯曲
NavMeshAgent 代码部分
& & 1.启用组件,即使角色在站立状态,也会轻微为角色添加移动,非常小的
& & & & 但是会影响刚体的速度的属性
& & & & 最好开始移动时 启用NavMeshAgent,移动结束关闭NavMeshAgent
& &//==============常用函数和变量================
& & remainingDistance& & &//寻路剩余距离,角色和目标点的距离,(有时候为0,需要与Vector3.Distance()效验)
& & stoppingDistance& & &//停止距离
& & SetDestination(Point);//设置要移动的目标点
& & destination& & & & & //设置要移动的目标点
& & Stop();& & & & & &//停止移动,寻路停止
& & Resume& & & & & //Stop之后用Resume来恢复
& & path.//储存路径,路径坐标点数组
& & ResetPath();& //重置路径
& & pathStatus& &//路径状况 ,当前路况的状态(完整,局部或者无效)。
& & & & PathComplete& & 在目的地的路径终止。The path terminates at the destination.
& & & & PathPartial& & & & 路径中不能到达目的地。The path cannot reach the destination.
& & & & PathInvalid& & & & 路径无效。The path is invalid.
& & velocity.magnitude //移动速度
//移动到B角色面前,用角色和B角色的包围盒的最近点,这样就不用修改 stoppingDistance停止距离
& & agent.destination = target.collider.ClosestPointOnBounds(transform.position);
&//===================判断角色是否到达目标点
& & & & &if (moveState == MoveState.Moving)
& & & & & & Vector3 targetPoint = hitP//目标点
& & & & & & Transform moveT =
& & & & & & NavMeshAgent nma = GetComponent&NavMeshAgent&();
& & & & & & float distance = Vector3.Distance(moveT.position, new Vector3(targetPoint.x, moveT.position.y, targetPoint.z));
& & & & & & if (distance &= nma.stoppingDistance || nma.pathStatus==NavMeshPathStatus.PathComplete)
& & & & & & {
& & & & & & & & moveState == MoveState.Moving
& & & & & & }
//=======================停止移动==============
& & void NavStop()
& & & & NavMeshAgent nma = GetComponent&NavMeshAgent&();
& & & & if (nma.enabled == true)//停止NavMeshAgent ,停止移动
& & & & & & if (nma.hasPath)
& & & & & & {
& & & & & & & & nma.ResetPath();
& & & & & & & & nma.Stop();
& & & & & & & & nma.enabled =
& & & & & & }
//=======================判断是否正在移动中======================
& & public bool IsMoving() {
& & & & // -& agent.hasPath will be true if stopping distance & 0, so we can't
& & & & //& & really rely on that.
& & & & // -& pathPending is true while calculating the path, which is good
& & & & // -& remainingDistance is the distance to the last path point, so it
& & & & //& & also works when clicking somewhere onto a obstacle that isn'
& & & & //& & directly reachable.
& & & & return agent.pathPending ||
& & & & & & & &agent.remainingDistance & agent.stoppingDistance ||
& & & & & & & &agent.velocity != Vector3.
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:31300次
排名:千里之外
原创:43篇
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'NavMeshAgent自动导航会自动播放动画吗? - Unity - A计划 2.0(一年有效期) - siki学院 - Unity游戏开发从入门到独立开发

我要回帖

更多关于 vue 获取父组件数据 的文章

 

随机推荐