Unity画线(自定义线)

来源:互联网 发布:贾真的淘宝店地址 编辑:程序博客网 时间:2024/05/14 08:35

之前一直在想怎么画自定义线,一开始想到有两种方法

1.用拖尾效果(trailRenderer)

2.lineRenderer

后面还是选用lineRenderer,虽然这个会生成N多个点,对性能不知道会有多大影响,但是目前水平也就只能实现功能,优化就能做就做。。

代码相对简单就不弄太多注释了,写给HTC手柄用的,不需要的可以只看核心部分

using UnityEngine;
using System.Collections;

public class DrawLine : MonoBehaviour {
    SteamVR_TrackedObject trackdeObjec;     //steamVR的一个脚本,在手柄模型上
    SteamVR_Controller.Device device;
    LineRenderer lr;
    Vector3 beforeVector3 = Vector3.zero;   //记录上次划线的位置
    int index = 0;
    public Material ma;                     //需要更换的材质球
    // Use this for initialization
    void Start () {
        trackdeObjec = transform.GetComponent<SteamVR_TrackedObject>();
        print(trackdeObjec);
        lr = transform.GetComponent<LineRenderer>();
}

// Update is called once per frame
void FixedUpdate () {
        device = SteamVR_Controller.Input((int)trackdeObjec.index);
        if (device.GetTouchDown(SteamVR_Controller.ButtonMask.Trigger))
        {
            index = 0;
            device.TriggerHapticPulse(3000);
        }
        if (device.GetTouch(SteamVR_Controller.ButtonMask.Trigger))
        {
            if (beforeVector3 != transform.position)//核心部分
            {
                index++;
                lr.SetVertexCount(index);           //设置lineRenderer的点个数
                lr.SetPosition(index-1, transform.position);    //设置位置
                beforeVector3 = transform.position;
            }
        }
        if (device.GetPressDown(SteamVR_Controller.ButtonMask.Axis0))
        {
            lr.material = ma;
            Debug.Log("用press按下了 “Axis0” “方向 ”");
        }       
    }
}

0 0