美文网首页
移动轨迹--导航射线

移动轨迹--导航射线

作者: 带着面包去流浪 | 来源:发表于2017-12-06 14:52 被阅读0次

    // 功能:

    // 挂载对象:

    //注意:

    using UnityEngine;

    using System.Collections;

    public class scricubefollow : MonoBehaviour

    {

    //public Transform m_sph;

    // 自身渲染器组件

    LineRenderer m_Line;

    // 自身导航组件

    NavMeshAgent m_agent;

    RaycastHit hit = new RaycastHit ();

    void Awake ()

    {

    // 拿到两个组件

    m_Line = GetComponent ();

    m_agent = GetComponent ();

    //m_Line.enabled = false;

    }

    void Update ()

    {

    // 鼠标鼠标点击哪里就去哪里

    if (Input.GetMouseButtonDown (0)) {

    Ray ray = Camera.main.ScreenPointToRay (Input.mousePosition);

    if (Physics.Raycast (ray, out hit)) {

    //让主角前往目的地

    m_agent.SetDestination (hit.point);

    // 绘制线条 (在此处角色走完的路线不会消失)

    DrawLine (hit);

    }

    }

    // 绘制线条 (在此处角色走完的路线会消失)

    //DrawLine (hit);

    }

    void DrawLine (RaycastHit hit)

    {

    // 绘制线条的核心代码:

    //1: 告诉我多少拐点

    // m_Line.SetVertexCount ();

    //2 告诉我拐点的位置在哪里

    // m_Line.SetPositions ();

    NavMeshPath path = new NavMeshPath ();

    m_Line.SetPosition (path.corners.Length, hit.point);

    // 计算从导航数据中计算出来所要走的路径信息

    m_agent.CalculatePath (hit.point, path);

    //path.corners

    // 设置要绘制的导航路线的拐点

    m_Line.SetVertexCount (path.corners.Length);

    // 设置拐点的位置

    m_Line.SetPositions (path.corners);

    // 也可使用循环来设置各个点

    //for (int i = 0; i < path.corners.Length; i++) {

    //m_Line.SetPosition (i, path.corners [i]);

    //}

    //激活线性组件

    //m_Line.enabled = true;

    }

    }

    相关文章

      网友评论

          本文标题:移动轨迹--导航射线

          本文链接:https://www.haomeiwen.com/subject/pozkixtx.html