查看: 1302|回复: 0
打印 上一主题 下一主题

[其他] Unity3D开发之利用LineRenderer画曲线

[复制链接]

2722

主题

42

听众

3万

积分

资深设计师

Rank: 7Rank: 7Rank: 7

纳金币
38266
精华
111

最佳新人 活跃会员 热心会员 灌水之王 突出贡献

跳转到指定楼层
楼主
发表于 2015-2-28 23:38:02 |只看该作者 |倒序浏览

unity3d开发之利用LineRenderer画曲线
  1. using UnityEngine;

  2. using System.Collections;

  3. using System.Collections.Generic;

  4. public class LinearDrawLine: MonoBehaviour {

  5. private int pointCnt = 0;

  6. public Color c1 = Color.red;

  7. public Color c2 = Color.blue;

  8. private LineRenderer lineRenderer;

  9. private Vector3 screenPoint;

  10. private Vector3 scanPos;

  11. private Vector3 first_pos = Vector3.zero;

  12. void Start () {

  13. scanPos = gameObject.transform.position;

  14. lineRenderer = (LineRenderer)gameObject.GetComponent(“LineRenderer”);

  15. lineRenderer.material = new Material (Shader.Find(“Particles/Additive”));

  16. lineRenderer.SetColors(c1, c2);

  17. lineRenderer.SetWidth(0.02F, 0.02F);

  18. lineRenderer.SetVertexCount(0);

  19. }

  20. void Update()

  21. {

  22. }

  23. void OnMouseDown(){

  24. Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);

  25. screenPoint = Camera.main.WorldToScreenPoint(scanPos);

  26. Vector3 curScreenPoint = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z);

  27. Vector3 curPosition = Camera.main.ScreenToWorldPoint(curScreenPoint);

  28. pointCnt = 0;

  29. DrawRenderLine(lineRenderer, curPosition);

  30. first_pos = curPosition;

  31. }

  32. void OnMouseDrag(){

  33. iTween.ScaleFrom(gameObject,iTween.Hash(“x”,2,“y”,2,“z”,2,“time”,.1,“easetype”,“linear”));

  34. Vector3 curScreenPoint = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPoint.z);

  35. Vector3 curPosition = Camera.main.ScreenToWorldPoint(curScreenPoint);

  36. DrawRenderLine(lineRenderer, curPosition);

  37. }

  38. void DrawRenderLine(LineRenderer line, Vector3 vect3){

  39. if((Mathf.Abs(first_pos.x - vect3.x) < 0.1) && (Mathf.Abs(first_pos.y - vect3.y) < 0.1))

  40. return;

  41. first_pos = vect3;

  42. line.SetVertexCount(++pointCnt);

  43. line.SetPosition(pointCnt-1, vect3);

  44. print(“new point: ”+vect3+“+”+pointCnt);

  45. }

  46. }
复制代码
分享到: QQ好友和群QQ好友和群 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
转播转播0 分享淘帖0 收藏收藏0 支持支持0 反对反对0
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

关闭

站长推荐上一条 /1 下一条

手机版|纳金网 ( 闽ICP备08008928号

GMT+8, 2024-4-30 19:38 , Processed in 0.198178 second(s), 29 queries .

Powered by Discuz!-创意设计 X2.5

© 2008-2019 Narkii Inc.

回顶部