通过获取鼠标位置实现自动寻路

来源:互联网 发布:网站下载器 mac 编辑:程序博客网 时间:2024/06/08 01:08

这个就是类似于英雄联盟,控制英雄移动的一个脚本。

下面这个是代码。

NavMeshAgent _agent;//导航代理,先声明,在Start中获取,方便以后使用    Ray _mouseRay;//射线,用于物理碰撞检测,如果对象没有碰撞体,则无法检测到    RaycastHit _mouseHitInfo;//当射线检测到时,它会存储检测到的物体信息    // Use this for initialization    void Start () {        _agent = GetComponent<NavMeshAgent>();//获取导航代理组件    }    // Update is called once per frame    void Update () {        if (Input.GetMouseButton(1))        {            Move();        }    }    void Move()    {        _mouseRay = Camera.main.ScreenPointToRay(Input.mousePosition);//通过Camera组件生成射线,传入的坐标为鼠标坐标,返回一个射线        bool flag = Physics.Raycast(_mouseRay, out _mouseHitInfo);//射线检测,第一个参数为设置好的射线,第二个参数为当射线检测到物体时,存储的物体信息,返回值,检测到物体为true,否则false        if (flag)        {            Vector3 mousePos = _mouseHitInfo.point;//获得射线检测到的点            _agent.SetDestination(mousePos);//设置导航目的地        }    }

然后在Unity中给玩家添加一个组件叫做NavMeshAgent,如下图:
这里写图片描述

最后别忘了把地面烘焙哦~

实现的效果:
这里写图片描述哈哈,不知道为啥鼠标没有录制上去!不要在意这些细节啦。。。

原创粉丝点击