Unity3D AI导航 Navigation

设置步骤:

  1. 调出Navigation面板:Window -> AI -> Navigation
    在这里插入图片描述
  2. 选择所有环境物体(静止物体),勾选【Navigation Static】,如果是不连接的对象勾选【Navigation OffMesh】
    在这里插入图片描述
  3. 设置环境物体(静止物体)是否能通过,山体、墙设置【Not Walkable】,平面设置【Walkable】
    在这里插入图片描述
  4. 其他数据都调整完成后,可以点击【back】按钮。(圆柱体的半径越小,导航的边缘空白越小)
    在这里插入图片描述
  5. 选择移动物体,添加 Navigation -> Nav Mesh Agent,还有刚体(Rigidbody)
    在这里插入图片描述

设置脚本

  1. 脚本调用navigation组件,必须先引用包:using UnityEngine.AI;
  2. 通过摄像机屏幕点击获取射线对象:Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
  3. 射线是否有碰撞对象:Physics.Raycast(ray,out hit, 20) “hit”是射线碰撞的点对象,“20”是射线最远距离
  4. 设置导航组件的终点:nav.SetDestination(hit.point);
public class NavigationTest : MonoBehaviour
{
    //先引用UnityEngine.AI包
    private NavMeshAgent nav;

    // Start is called before the first frame update
    void Start()
    {
        //获取导航组件
        nav = GetComponent<NavMeshAgent>();
    }

    // Update is called once per frame
    void Update()
    {
        //判断用户是否按鼠标左键
        if (Input.GetButtonDown("Fire1"))
        {
            //通过摄像机屏幕点击获取射线对象
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            //碰撞对象变量
            RaycastHit hit;
            //判断射线是否有碰撞对象,射线长度限制为20
            if(Physics.Raycast(ray,out hit, 20))
            {
                //设置导航组件的终点,有了终点导航就会指引物体移动
                nav.SetDestination(hit.point);
            }
        }
    }
}

讲解Area用法:https://blog.csdn.net/shenqiankk/article/details/100145696

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值