shader拖尾_Unity LineRenderer 之 鼠标轨迹记录和拖尾实现

“MouseTrack”脚本的具体内容如下;

using UnityEngine;

public class MouseTrack : MonoBehaviour {

/// 

/// 获取LineRenderer组件

/// 

[Header("获得LineRenderer组件")]

public LineRenderer lineRenderer;

private Vector3[] mouseTrackPositions = new Vector3[10];

private Vector3 headPosition;

private Vector3 lastPosition;

private int positionCount = 0;

[Header("设置多远举例记录一个位置")]

public float distanceOfPositions = 0.01f;

private bool firstMouseDown = false;

private bool mouseDown = false;

// Use this for initialization

void Start () {

}

// Update is called once per frame

void Update () {

if(Input.GetMouseButtonDown (0)) {

firstMouseDown = true;

mouseDown = true;

}

if(Input.GetMouseButtonUp (0)){

mouseDown = false;

Debug.Log ("mouseDown:"+mouseDown.ToString ());

}

OnDrawLine ();

firstMouseDown = false;

}

private void OnDrawLine(){

if(firstMouseDown == true){

positionCount = 0;

headPosition = Camera.main.ScreenToWorldPoint (Input.mousePosition + new Vector3 (0, 0, 10));

lastPosition = headPosition;

}

if (mouseDown == true) {

headPosition = Camera.main.ScreenToWorldPoint (Input.mousePosition + new Vector3 (0, 0, 10));

if (Vector3.Distance (headPosition, lastPosition) > distanceOfPositions) {

SavePosition (headPosition);

positionCount++;

}

lastPosition = headPosition;

} else {

mouseTrackPositions = new Vector3[10];

}

SetLineRendererPosition (mouseTrackPositions);

}

private void SavePosition(Vector3 pos){

pos.z = 0;

if (positionCount <= 9) {

for (int i = positionCount; i 

mouseTrackPositions [i] = pos;

}

} else {

for(int i = 0; i 

mouseTrackPositions [i] = mouseTrackPositions [i + 1];

}

mouseTrackPositions [9] = pos;

}

}

private void SetLineRendererPosition(Vector3[] positions){

lineRenderer.SetPositions (positions);

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值