精华内容
参与话题
问答
  • unity lineRender

    2020-07-25 01:25:47
    简单使用 m_ShotLineRender.SetPosition(0, Vector3.zero); m_ShotLineRender....3一个物体只能创建一个LineRender, 要画多条线只能创建多个物体 4material的Shader改为Sprites/Default,否则不能修改颜色。 ...

    简单使用

    
    m_ShotLineRender.SetPosition(0, Vector3.zero);
    m_ShotLineRender.SetPosition(1,Vector.one);
    

    注意事项

    1 LineRender 必须设置材质
    2 LineRender 在2d中被其他sprite遮挡。只能设置Z轴
    3一个物体只能创建一个LineRender, 要画多条线只能创建多个物体
    4material的Shader改为Sprites/Default,否则不能修改颜色。

    展开全文
  • 本文实例为大家分享了Unity LineRender实现绘画功能的具体代码,供大家参考,具体内容如下 老规矩,直接上代码: using System; using System.Collections; using System.Collections.Generic; using UnityEngine; ...
  • 主要为大家详细介绍了Unity使用LineRender断笔写字效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • Unity LineRender 绘画

    2020-05-18 15:02:52
    Unity LineRender 绘画 老规矩,直接上代码: using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class DrawLine_ZH : MonoBehaviour { private GameObject ...

    Unity LineRender 绘画

    老规矩,直接上代码:

    using System;
    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class DrawLine_ZH : MonoBehaviour
    {
        private GameObject _Clone;
        private LineRenderer _Line;
        int _Number;
    
        //带有LineRender物体
        [Header("LineRender预制体")]
        public GameObject _Target;
    
        void Update()
        {
            if (Input.GetMouseButtonDown(0))
            {
                //实例化对象
                _Clone = Instantiate(_Target, _Target.transform.position, Quaternion.identity);
    
                //获得该物体上的LineRender组件
                _Line = _Clone.GetComponent<LineRenderer>();
    
                //设置起始和结束的颜色
                //_Line.SetColors(Color.red, Color.blue);
                _Line.startColor = Color.red;
                _Line.endColor = Color.blue;
    
                //设置起始和结束的宽度
               // _Line.SetWidth(0.2f, 0.1f);
                _Line.startWidth = 0.2f; ;
                _Line.endWidth = 0.1f;
    
                //计数
                _Number = 0;
            }
            if (Input.GetMouseButton(0))
            {
                //每一帧检测,按下鼠标的时间越长,计数越多
                _Number++;
    
                //设置顶点数
                //_Line.SetVertexCount(_Number);
                _Line.positionCount = _Number;
    
                //设置顶点位置(顶点的索引,将鼠标点击的屏幕坐标转换为世界坐标)
                _Line.SetPosition(_Number - 1, Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, 15)));
    
    
            }
    
            //清除绘画
    
            if (Input.GetMouseButtonDown(1))
            {
                GameObject[] _Draw = GameObject.FindGameObjectsWithTag("DarwLine");
                for (int i = 0; i < _Draw.Length; i++)
                {
                    Destroy(_Draw[i]);
                }
            }
    
        }
    }
    
    

    注意添加 预制体 和 材质球:
    脚本要搭载:
    在这里插入图片描述
    预制体(可自定义):
    在这里插入图片描述
    预制体材质(可自定义):
    在这里插入图片描述

    最终效果:
    在这里插入图片描述

    暂时先这样吧,如果实在看不明白就留言,看到我会回复的。
    路长远兮,与君共勉。

    展开全文
  • Unity3D LineRender画线

    2020-12-04 11:01:37
    LineRender画线

    LineRender画线

    新建空物体,添加LineRenderer组件,作为预制体,后续画线用。

    	private LineRenderer lineRenderer;
        private List<Vector3> linePointList;
        private Vector3[] linePoints;
    
    	private void Update()
        {
            if (Input.GetMouseButtonDown(1))//新建画线
            {
                lineID++;
                DrawLineInit(lineID);
            }
            else if (GameObject.Find("Line"+lineID))//画线
            {
                DrawLine();
            }
        }
        void DrawLineInit(int id)
        {
    
            GameObject line=(GameObject)Instantiate(Resources.Load("Line"));//新建线条
            line.name = "Line" + id;
            GameObject UICanvas = GameObject.Find("Canvas");
            line.transform.SetParent(UICanvas.transform,false);//设置线条的父物体为Canvas
            lineRenderer = line.GetComponent<LineRenderer>();
            linePointList = new List<Vector3>();
            lineRenderer.useWorldSpace = false;
        }
    
        void DrawLine()
        {
            if (Input.GetMouseButtonDown(0))
            {
                linePointList.Add(Input.mousePosition);//点击一下 添加一个点
                linePoints = linePointList.ToArray();//线段点集
                lineRenderer.positionCount = linePoints.Length + 1;//设置点数 多设置一个作为活动的mousePosition点
                lineRenderer.SetPositions(linePoints);
                lineRenderer.SetPosition(linePoints.Length, linePoints[linePoints.Length - 1]);//最后一个点设置为 其前一个点
            }
            else if (lineRenderer.positionCount > 1)
            {
                //最后一点设置为 鼠标指针点
                lineRenderer.SetPosition(linePoints.Length, Input.mousePosition);
            }
        }
    

    第一条线右键新建,右键结束并新建,左键画线。

    展开全文
  • 针对LineRender和TrailRender的Shader,可以支持修改和定制渲染的方式和颜色。 详细的使用说明可以参考我的博客: http://blog.csdn.net/andrewfan
  • unity利用LineRender组建实现段笔写字,画线,删除等功能
  • LineRender组件绘制平滑曲线连接几个点 文章目录LineRender组件绘制平滑曲线连接几个点项目背景实现方法代码 项目背景 给定一组点,使用 unity3d 中的Linerender组件绘制平滑曲线连接几个点,考虑到 unity 中常用的...

    LineRender组件绘制平滑曲线连接几个点


    项目背景

    给定一组点,使用 unity3d 中的Linerender组件绘制平滑曲线连接几个点,考虑到 unity 中常用的贝塞尔曲线只经过首位两个控制点,不经过其余控制点,故采用 Catmull-Rom样条曲线

    在这里插入图片描述


    实现方法

    创建一个空物体 Empty

    在这里插入图片描述


    选中Empty,添加组件 LineRender

    在这里插入图片描述


    创建C#脚本 SmoothCurveHandler.cs ,挂在随便一个控制点上,选择参数如图。

    在这里插入图片描述


    代码

    SmoothCurveHandler.cs

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;
    
    public class SmoothCurveHandler : MonoBehaviour
    {
        [SerializeField] LineRenderer lineRender;
    
        [SerializeField] List<Transform> posList;
    
        const int countBetween2Point = 20;
    
        Vector3[] curvePoints;
    
        void Start()
        {
            // 为当前物体添加  LineRenderer 组件。
            lineRender = gameObject.AddComponent<LineRenderer>();
            // 设置材料的属性
            //lineRender.material = new Material(Shader.Find("Particles/Additive"));
            // 设置线段的起点颜色和终点颜色
            lineRender.startColor = Color.blue;
            lineRender.endColor = Color.red;
            // 设置线段起点宽度和终点宽度
            lineRender.startWidth = 0.3f;
            lineRender.endWidth = 0.3f;
    
            curvePoints = new Vector3[countBetween2Point * (posList.Count - 1) + 1];
    
            lineRender.positionCount = curvePoints.Length;
        }
    
        void Update()
        {
            CalculateCurve();
            lineRender.SetPositions(curvePoints);
        }
    
        Vector3 firstPos, curPos, nextPos, lastPos;
        void CalculateCurve()
        {
            //依次计算相邻两点间曲线
            //由四个点确定一条曲线(当前相邻两点p1,p2,以及前后各一点p0,p3)
            for (int i = 0; i < posList.Count - 1; i++)
            {
                //特殊位置增加虚拟点
                //如果p1点是第一个点,不存在p0点,由p1,p2确定一条直线,在向量(p2p1)方向确定虚拟点p0
                if (i == 0)
                    firstPos = posList[i].position * 2 - posList[i + 1].position;
                else
                    firstPos = posList[i - 1].position;
                //中间点
                curPos = posList[i].position;
                nextPos = posList[i + 1].position;
                //特殊位置增加虚拟点,同上
                if (i == posList.Count - 2)
                    lastPos = posList[i + 1].position * 2 - posList[i].position;
                else
                    lastPos = posList[i + 2].position;
    
                CatmulRom(firstPos, curPos, nextPos, lastPos, ref curvePoints, countBetween2Point * i);
            }
            //加入最后一个点位
            curvePoints[curvePoints.Length - 1] = posList[posList.Count - 1].position;
        }
    
        //平滑过渡两点间曲线(p1,p2为端点,p0,p3是控制点)
        void CatmulRom(Vector2 p0, Vector2 p1, Vector2 p2, Vector2 p3, ref Vector3[] points, int startIndex)
        {
            //计算Catmull-Rom样条曲线
            float t0 = 0;
            float t1 = GetT(t0, p0, p1);
            float t2 = GetT(t1, p1, p2);
            float t3 = GetT(t2, p2, p3);
    
            float t;
            for (int i = 0; i < countBetween2Point; i++)
            {
                t = t1 + (t2 - t1) / countBetween2Point * i;
    
                Vector2 A1 = (t1 - t) / (t1 - t0) * p0 + (t - t0) / (t1 - t0) * p1;
                Vector2 A2 = (t2 - t) / (t2 - t1) * p1 + (t - t1) / (t2 - t1) * p2;
                Vector2 A3 = (t3 - t) / (t3 - t2) * p2 + (t - t2) / (t3 - t2) * p3;
    
                Vector2 B1 = (t2 - t) / (t2 - t0) * A1 + (t - t0) / (t2 - t0) * A2;
                Vector2 B2 = (t3 - t) / (t3 - t1) * A2 + (t - t1) / (t3 - t1) * A3;
    
                Vector2 C = (t2 - t) / (t2 - t1) * B1 + (t - t1) / (t2 - t1) * B2;
    
                points[startIndex + i] = C;
            }
        }
    
        float GetT(float t, Vector2 p0, Vector2 p1)
        {
            return t + Mathf.Pow(Mathf.Pow((p1.x - p0.x), 2) + Mathf.Pow((p1.y - p0.y), 2), 0.5f);
        }
    
    }
    
    
    
    展开全文
  • unity 线渲染器LineRender

    千次阅读 2018-04-04 09:13:39
    1.材质球2.起点终点LineRender.Setposition
  • unity LineRender用法——画线

    千次阅读 2019-09-04 11:22:01
    1、创建一个空物体,加上LineRender组件 2、创建一个材质,用来渲染Line Shader "MyShader/RenderDepth" { Properties { _Color("MainColor",Color)=(1,1,1,1) } SubShader { Pass { ...
  • 在此记录一下使用Unity3D 的LineRender绘制线的过程,经过测试LineRender与OpenGL的GL_LINE_STRIP绘制方式一样,因此计算完点之后需要把起始点即为终点,多算一个点才算闭合。 代码如下: using System....
  • 利用LineRender制作移动引导 要实现这个功能,需要用到网格导航,因为射线的点是通过读取网格导航的相关数据获取的,当然,为了得到更好的视觉效果,你还需要修改射线的材质 * public class MoveGuide : ...
  • unity关于lineRender平滑画线问题_unity3d5.3.6源码.zip
  • <div><p>For a simple red color plane, I am getting different colors in the rendered output when viewing in the online server vs the output.png produced by offline render via electron. Both rendered ...
  • LineRender用于在3D世界中渲染线段。 首先创建空物体GameObject,添加组件LineRenderer. 添加如下脚本: public GameObject LineRenderGameObject;//GameObject空物体  public LineRenderer lineRender;//...
  • unity关于lineRender平滑画线问题

    万次阅读 2016-02-01 16:44:49
    使用lineRender的时候需要在摄像机上加上组件linerender 可以调节粗细颜色之类 可以简单下面方法测试 void Start () { lineRenderer = gameObject.GetComponent(); lineRenderer.SetVertexCount(5); }  ...
  • 期望效果如下图 ![图片说明](https://img-ask.csdn.net/upload/201808/22/1534919764_542813.png) (这个是Volumetric Lines插件中的场景,用unity自带的LineRender要怎么实现类似的效果)
  • 前言:刚从Python转到U3D时,第一个项目涉及到画线,刚开始想那还不简单吗,不就是获取位置后着色吗,H5中...Unity画线最简单的实现方法LineRender组件: LineRender实现起来比较简单, 1 public class line...
  • 在物体上创建Line Render 组件 将该组件的position属性的1,2两个参数设置为和物体一致 //比较常用的是设置LineRenderer的位置 Renderer temp = gameObject.GetComponent&amp;amp;lt;LineRenderer&...
  • 【Unity3D】Unity3D LineRender组件的研究

    千次阅读 2018-06-28 10:42:53
    发现网上很多教程都是如何用LineRender组件画线,但是这个组件还有很多其他的功能属性也是很有趣的,下面就让我们来看看吧 用途 LineRender组件主要的用途就是画线,将这个组件加载到对象上,然后设置路径,跟线的...
  • 挂在带有LineRender的GameObject上就可以了 using System.Collections; using System.Collections.Generic; using UnityEngine; [ExecuteInEditMode] public class AttrLine : MonoBehaviour { [Range(0, 1)] public...
  • Android | Line render error

    2020-12-30 03:42:33
    ve problems with Lines when I create Line using Map.addMarker(). <p>Large line: If line is large and I do zoom in the lines disappear. <p>Small line if line is small and I do zoom in the line ...
  • 1.LineRender 今天利用画线组件实现屏幕画线时,突然想看下画出线的线框,打开在Scene视窗打开线框(Wirefame)模式,线框如下 线渲染器有自己的渲染算法,会自动朝向相机方向,盲猜lookat().滑稽。 利用Mesh实现...
  • 添加LineRender组件,添加材质,让其可以正常显示 把line预设保存在Assets/Resources目录中 接下来创建一个LineRenderTest.cs脚步,挂到摄像机上。 脚本如下: using UnityEngine; using System.Collections; ...
  • 二、创建LineRender对象新建一个空物体,然后添加LineRender组件,并设为预制体,然后删除此物体,只保留预制件。三、建立背景创建一个Quad,在创建一个黑色的材质球,添加到Quad上,把Quad的sizd属性设为10.10.10,...

空空如也

1 2 3 4 5 ... 20
收藏数 10,310
精华内容 4,124
关键字:

linerender