Unity 寻路案例:自动寻路到目标点

1. 按

在一个平面中,寻路物体会绕开平面上的障碍物并自动寻路以达到目标体所在的位置。
在这里插入图片描述

2. 操作步骤

  1. 创建的所有物体如图所示,1个Plane,7个Cube(其中六个是障碍物,Cube 6是目标物体),1个Sphere
    在这里插入图片描述

  2. Window->AI->Navigation
    在这里插入图片描述

  3. 点击Navigation,选中所有障碍物和平面,勾选Navigation Static
    在这里插入图片描述

  4. 将平面设为可走的(Walkable)
    在这里插入图片描述

  5. 将障碍物设为不可走的(Not Walkable)
    在这里插入图片描述

  6. 根据具体场景调节导航网格的大小
    在这里插入图片描述

  7. 进行烘焙后会看到可走的部分是蓝色的
    在这里插入图片描述

  8. 选中球形物体,添加Nav Mesh Agent
    在这里插入图片描述

  9. 将以下脚本挂载到主场景上

    using UnityEngine;
    using UnityEngine.AI;
    
    public class test : MonoBehaviour
    {
        public NavMeshAgent agent; //寻路者
        public Transform target;    //寻路目标
        // Start is called before the first frame update
        void Start()
        {
            
        }
    
        // Update is called once per frame
        void Update()
        {
            agent.SetDestination(target.position);  //寻路算法
        }
    }
    
    
  10. 绑定变量,此时已完成任务。
    在这里插入图片描述

  11. 最后也可以添加控制目标体移动的功能,将以下代码生成的脚本绑定到目标四方体上

    using UnityEngine;
    
    public class movement : MonoBehaviour
    {
        public float speed = 5;
        public float angularSpeed = 30;
        private Rigidbody rigidbody;
        // Start is called before the first frame update
        void Start()
        {
            rigidbody = this.GetComponent<Rigidbody>();
        }
    
        // Update is called once per frame
        void Update()
        {
            float v = Input.GetAxis("Vertical");
            rigidbody.velocity = transform.forward * v * speed;
            float h = Input.GetAxis("Horizontal");
            rigidbody.angularVelocity = transform.up * h * angularSpeed;
        }
    }
    
  12. 给目标四方体添加Rigidbody,冻结Position中的y,Rotation中的x轴,即可实现按上下左右箭头键移动和控制目标体的方向
    在这里插入图片描述

展开阅读全文
©️2020 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值