我的Unity(6)一点一滴 使用线性渲染出现移动路线

这里需要实现的效果,这里写图片描述

自动导航,沿着轨迹行走,后面出现移动轨迹。
需要组件,一个是NavMeshAgent,一个是LineRenderer组件,

//绘制线条的核心代码:
                //1多少个拐点
                //m_line.SetVertexCount ();
                //2拐点的位置
                //m_line.SetPositions ();

                //m_line.SetVertexCount ();找导航的数据


NavMeshAgent m_nav;
    LineRenderer m_line;

    Ray m_ray;
    RaycastHit m_hit;
    Vector3 m_tarpos;

    void Awake ()
    {
        m_nav = GetComponent <NavMeshAgent> ();
        m_line = GetComponent <LineRenderer> ();
        //设置线性渲染组件没有被激活;`这里写代码片`
        m_line.enabled = false;

    }


    void Update ()
    {
        if (Input.GetMouseButtonDown (0)) {
        //激活线性渲染组件
            m_line.enabled = true;
            m_ray = Camera.main.ScreenPointToRay (Input.mousePosition);
            if (Physics.Raycast (m_ray, out m_hit)) {
                m_tarpos = m_hit.point;
                //设置路径的点,
                NavMeshPath path = new NavMeshPath ();
                //路径  导航。
                m_nav.CalculatePath (m_tarpos, path);
                //线性渲染设置拐点个数。数组类型的。
                m_line.SetVertexCount (path.corners.Length);
                //线性渲染的拐点位置,数组类型,
                m_line.SetPositions (path.corners);

                m_nav.SetDestination (m_tarpos);
            }

        }
    }
}

这样物体移动后,后面的轨迹线还在,需要优化一下。

public class xianxingxuanran : MonoBehaviour
{

    NavMeshAgent m_nav;
    LineRenderer m_line;

    Ray m_ray;
    RaycastHit m_hit;
    Vector3 m_tarpos;

    void Awake ()
    {
        m_nav = GetComponent <NavMeshAgent> ();
        m_line = GetComponent <LineRenderer> ();
        m_line.enabled = false;

    }


    void Update ()
    {
        NavMeshPath path = new NavMeshPath ();

        if (Input.GetMouseButtonDown (0)) {
            m_line.enabled = true;
            m_ray = Camera.main.ScreenPointToRay (Input.mousePosition);
            if (Physics.Raycast (m_ray, out m_hit)) {
                m_tarpos = m_hit.point;

            }
        }
        //设置路径的点,
        //路径  导航。
        m_nav.CalculatePath (m_tarpos, path);
        //线性渲染设置拐点的个数。数组类型的。
        m_line.SetVertexCount (path.corners.Length);
        //线性渲染的拐点位置,数组类型,
        m_nav.SetDestination (m_tarpos);
        m_line.SetPositions (path.corners);

    }
}

这里写图片描述

阅读更多

没有更多推荐了,返回首页