我的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);

    }
}

这里写图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值