最终效果


把下面脚本复制,直接拖上脚本,设置两个点(物体)的位置
GameObject1是开始点的位置,GameObject2是结束点的位置

    public Transform[] controlPoints;public LineRenderer lineRenderer;public float centerPoint =0.1f;private int layerOrder = 0;//生成弧线中间的点数private int _segmentNum = 20;//偏移float m_offset;float m_speed = 0.5f;void Start(){if (!lineRenderer){lineRenderer = GetComponent<LineRenderer>();}lineRenderer.sortingLayerID = layerOrder;//调用画贝斯尔线GetBeizerList(controlPoints[0].position, (controlPoints[0].position + controlPoints[1].position) * 0.5f + new Vector3(0, centerPoint, 0), controlPoints[1].transform.position, _segmentNum);}private void Update(){m_offset = m_offset - m_speed * Time.deltaTime;//控制offset使材质移动GetComponent<LineRenderer>().material.mainTextureOffset = new Vector2(m_offset, 0);}/// <summary>/// 根据T值,计算贝塞尔曲线上面相对应的点/// </summary>/// <param name="t"></param>T值/// <param name="p0"></param>起始点/// <param name="p1"></param>控制点/// <param name="p2"></param>目标点/// <returns></returns>根据T值计算出来的贝赛尔曲线点private static Vector3 CalculateCubicBezierPoint(float t, Vector3 p0, Vector3 p1, Vector3 p2){float u = 1 - t;float tt = t * t;float uu = u * u;Vector3 p = uu * p0;p += 2 * u * t * p1;p += tt * p2;return p;}/// <summary>/// 获取存储贝塞尔曲线点的数组/// </summary>/// <param name="startPoint"></param>起始点/// <param name="controlPoint"></param>控制点/// <param name="endPoint"></param>目标点/// <param name="segmentNum"></param>采样点的数量/// <returns></returns>存储贝塞尔曲线点的数组public Vector3[] GetBeizerList(Vector3 startPoint, Vector3 controlPoint, Vector3 endPoint, int segmentNum){Vector3[] path = new Vector3[segmentNum];for (int i = 1; i <= segmentNum; i++){float t = i / (float)segmentNum;Vector3 pixel = CalculateCubicBezierPoint(t, startPoint,controlPoint, endPoint);//设置lineRenderer的control PointslineRenderer.positionCount = i;lineRenderer.SetPosition(i - 1, pixel);//存储Pointpath[i - 1] = pixel;Debug.Log(path[i - 1]);}return path;}

有用的话点个赞,3Q

unity画一条流动的弧线(贝塞尔线)相关推荐

  1. 使用Unity画一条平滑曲线(贝塞尔曲线)并使小球沿曲线运动

    关于贝塞尔曲线知识(请具体阅读)转载自:http://www.cnblogs.com/jay-dong/archive/2012/09/26/2704188.html 这里直接讲解在U3D中的实现方式 ...

  2. 通过unity画弧线

    using UnityEngine; using System.Collections;public class Test : MonoBehaviour {public int a;//a>0 ...

  3. Unity 中 用LineRender来实现画多条直线的方法

    Unity 中 用LineRender来实现画多条直线的方法: 直接上代码: public class Testline : MonoBehaviour { //LineRenderer privat ...

  4. 根据多个点使用canvas贝赛尔曲线画一条平滑的曲线

    众所周知想用canvas画一条曲线我们可以使用这些函数: 二次曲线:quadraticCurveTo(cp1x, cp1y, x, y) 贝塞尔曲线:bezierCurveTo(cp1x, cp1y, ...

  5. 中间画一条短竖线_许愿孔明灯怎么画,简约好看的孔明灯简笔画教程

    日常许愿用的孔明灯简笔画如下,主要由直线和椭圆形构成.首先画一个椭圆形作为它的底部,然后在它的两端分别向上画一条线,接着线的一端继续画三条短直线,把整个轮廓描出来.然后在拐角处画上两竖线,让它有棱角更 ...

  6. java闪屏怎么制作,Java Swing创建自定义闪屏:在闪屏下画进度条(一)

    Java Swing创建自定义闪屏:在闪屏上画进度条(一) 由于本人十分热爱Java Swing,所以平时闲暇之余总是喜欢极尽所能去搜藏一些自认为比较"酷"的Swing代码来研究揣 ...

  7. IOS之Label画一条删除线

    IOS之Label画一条删除线 例如上面的价格100 如何对100添加删除线. 我们需要自定义一个Label,继承于UILabel系统类.在xib上对控件添加自定义Label类.LJCenterLab ...

  8. 为什么老师批改完试卷,分数下要画两条横线?今天终于知道了!

    全世界只有3.14 % 的人关注了 爆炸吧知识 总有考试分数下画两条横线的习惯,原来是这样形成的! 为什么老师改卷之后 会在分数下画两条横线呢? 你要去问老师? 别问了,可能连老师都不知道-- 来看看 ...

  9. div和div之间画横线_HTML如何在两个div标签中间画一条竖线

    近日在画一个界面的时候,遇到一个需求:在界面当中画一条竖线,且这条竖线在高度上需要自动占满整个父div(即这条竖线的高度和两个div中较高的一个等高). 往常我们画一条横线直接用标签 即可,当画一条竖 ...

最新文章

  1. swaggerui api.docs
  2. 上海 |《PMCAFF 产品经理第一课》全面提升,微博副总裁、丁香园、1号店、淘宝、阿里巴巴产品总监最强分享...
  3. android分辨率比例成像,像素不是唯一 决定成像效果你必知的真相
  4. HTTP 和 HTTPS 两种传输协议各自含义是什么?二者使用有什么区别?
  5. Laravel 超好用代码提示工具 Laravel IDE Helper
  6. Spark之RDD实战篇
  7. Redmi Note 10 Pro发布 首发价1499元起
  8. [Elasticsearch] es 6.8 编译成功
  9. Python __add__
  10. 弃 Windows 转投 Linux,微软全面进军 IoT!
  11. 结构与表现分离的思想
  12. 模板方法模式的房间改造-组合查询
  13. 从零基础入门Tensorflow2.0 ----三、10. 近似求导
  14. 为什么要学习数据库,数据库有什么作用呢,以及为什么要选mysql
  15. 吉珠计算机专业插本学校,2015年吉珠与北理珠的专插本考生必看:招生专业数据统计...
  16. 基因组Masked作用
  17. Linux 管道通信
  18. 教你如何利用灰度图透明效果制作隐藏图片.Part2
  19. 【UER #4】量子态的棋盘
  20. 去掉Word2007文档眉头的横线

热门文章

  1. androd11 编译 Manually written binder interfaces are considered error prone and frequently have bugs.
  2. 安卓ExpandableListView实现多组列表,类似于QQ分组
  3. 130行代码实现海贼王漫画下载
  4. html5+文本间距,html怎么设置文字的间距
  5. Python回归预测建模实战-随机梯度下降法预测房价(附源码和实现效果)
  6. 06篇 Nacos Client本地缓存及故障转移
  7. Android--设置App的启动页面
  8. 基于yolov5的火焰识别
  9. 汽车电子EMC实验简介
  10. ftp服务器文件传输,FTP服务器之间传输文件