Unity3D开发之利用LineRenderer画曲线

本文介绍了一个Unity脚本,用于实现通过鼠标拖动在3D空间中绘制彩色线条的功能。该脚本利用了LineRenderer组件,并展示了如何设置材质、颜色及宽度等属性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

using UnityEngine;

using System.Collections;

using System.Collections.Generic;



public class LinearDrawLine: MonoBehaviour {

	private int pointCnt = 0;
	public Color c1 = Color.red;
	public Color c2 = Color.blue;
	private LineRenderer lineRenderer;

	private Vector3 screenPoint;
	private Vector3 scanPos;
	private Vector3 first_pos = Vector3.zero;

    void Start () {
		 scanPos = gameObject.transform.position;

		 lineRenderer = (LineRenderer)gameObject.GetComponent("LineRenderer");
		 lineRenderer.material = new Material (Shader.Find("Particles/Additive"));
	     lineRenderer.SetColors(c1, c2);
	     lineRenderer.SetWidth(0.02F, 0.02F);
	     lineRenderer.SetVertexCount(0); 		 
	}
   
	void Update()
	{
	}
	
	void OnMouseDown(){
		Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
		screenPoint = Camera.main.WorldToScreenPoint(scanPos);
		Vector3 curScreenPoint = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z);
	 	Vector3 curPosition = Camera.main.ScreenToWorldPoint(curScreenPoint);
		pointCnt = 0;
		DrawRenderLine(lineRenderer, curPosition);
		first_pos = curPosition;
	}
	
	void OnMouseDrag(){
		iTween.ScaleFrom(gameObject,iTween.Hash("x",2,"y",2,"z",2,"time",.1,"easetype","linear"));
		Vector3 curScreenPoint = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z);
	 	Vector3 curPosition = Camera.main.ScreenToWorldPoint(curScreenPoint);
		DrawRenderLine(lineRenderer, curPosition);
	}
	
	void DrawRenderLine(LineRenderer line, Vector3 vect3){
		if((Mathf.Abs(first_pos.x - vect3.x) < 0.1) && (Mathf.Abs(first_pos.y - vect3.y) < 0.1))
			return;
		first_pos = vect3;
        line.SetVertexCount(++pointCnt);
        line.SetPosition(pointCnt-1, vect3);
		print("new point: "+vect3+"+"+pointCnt);
	}

}


这种方式相比于GL方式来说,它不需要添加到相机中,可以是点击某个物品来画图。

可以直接把这个脚本拉到物品上面就可以用了。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值