当前位置:   article > 正文

Unity 导航网格的使用_unity导航网格

unity导航网格

导航网格是unity开发的简单实用的工具,使用者不需要编写复杂的A*算法或其他的算法就可以实现一些基本的导航功能,下面让我们来一起学习一下吧。

目录

一、创建平面和物体

二、打开导航网格功能

三、导航设置

四、脚本设置

 1.物体二静止

2.物体二逃跑

3.物体二欲拒还迎

4.做一个有原则的方块


一、创建平面和物体

平面可以用材质球使它变成黑色的

 随便创建两个物体,分别命名为1和2

二、打开导航网格功能

 这里我用的版本是2020的,打开windows点击AI点击Navigation之后,可以在右侧视图旁边看到多出一个标签三、导航设置

三、导航设置

 为物体1添加Nav Mesh Agent 代理这个组件

先点击Plane,右侧的Navigation 组件点击静态,随后进行渲染(Bake)。

四、脚本设置

 1.物体1运动脚本

代码中的公共变量target就是物体2,要把物体2赋值给物体1

  1. using System.Collections;
  2. using UnityEngine;
  3. using UnityEngine.UI;
  4. using UnityEngine.AI;//添加封装的对象
  5. ///<summary>
  6. ///
  7. ///<summary>
  8. public class Track : MonoBehaviour
  9. {
  10. public GameObject target;
  11. NavMeshAgent agent;
  12. private void Awake()//第一次调用,初始化文件
  13. {
  14. agent = GetComponent<NavMeshAgent>();//调用组件
  15. }
  16. private void Update()
  17. {
  18. agent.SetDestination(target.transform.position);//定位物体二即目标的位置
  19. }
  20. }

 这时候好像是1去追求2,2也愿意,所以2不动在原地等着,没一会就追到了。

2.物体2逃跑

1去追求2,2不愿意,所以我们给它添加一个逃跑的程序,让1在后面追赶,这是物体2的代码要挂载在物体2上

  1. using System.Collections;
  2. using UnityEngine;
  3. using UnityEngine.UI;
  4. ///<summary>
  5. ///
  6. ///<summary>
  7. public class Flee : MonoBehaviour
  8. {
  9. public float speed;
  10. private void Update()
  11. {
  12. this.transform.Translate(0,0,Time.deltaTime);//给物体2一个速度
  13. }
  14. }

3.物体二欲拒还迎

这是物体2的脚本,要挂载在物体2上

2是一个有战术的物体,它想要别人追它,又不想让它跑了,所以当距离过大时,它就停下来等一会,距离过小时,它就往前走一会

  1. using System.Collections;
  2. using UnityEngine;
  3. using UnityEngine.UI;
  4. using UnityEngine.AI;
  5. ///<summary>
  6. ///
  7. ///<summary>
  8. public class Flee : MonoBehaviour
  9. {
  10. public float speed=10.0f;
  11. public GameObject dog;
  12. private void Update()
  13. {
  14. if(Vector3.Distance(dog.transform.position, transform.position)>5.0f)
  15. {
  16. this.transform.Translate(0, 0, 0);//让它静止
  17. }
  18. else
  19. {
  20. this.transform.Translate(0, 0, speed*Time.deltaTime);//给物体2一个速度
  21. speed += 5;
  22. }
  23. }
  24. }

4.做一个有原则的方块

这是物体1的脚本,要挂载在物体1上

想吊着你,这可不能答应,一般会有几种选择:

               猛烈进攻,追上它(快速提升速度和加速度)

  1. using System.Collections;
  2. using UnityEngine;
  3. using UnityEngine.UI;
  4. using UnityEngine.AI;//添加封装的对象
  5. public class Track : MonoBehaviour
  6. {
  7. public GameObject target;
  8. NavMeshAgent agent;
  9. private void Awake()//第一次调用,初始化文件
  10. {
  11. agent = GetComponent<NavMeshAgent>();//调用
  12. gameObject.GetComponent<NavMeshAgent>().speed=10;//调用组件的速度
  13. gameObject.GetComponent<NavMeshAgent>().acceleration = 10;//调用组件的加速度
  14. }
  15. private void Update()
  16. {
  17. agent.SetDestination(target.transform.position);
  18. }
  19. }

                  

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/95293
推荐阅读
相关标签
  

闽ICP备14008679号