微信号:ITComputerGraph

更多精彩内容,关注公众号《IT木子李》

主要应用LineRenderer组件实现连线效果,根据距离判断是否需要连接,并设置透明度;

直接上代码;

using UnityEngine;public class DrawLine : MonoBehaviour
{/// <summary>最大距离</summary>float maxDistance;/// <summary>最小距离</summary>float minDistance;/// <summary>点的标签</summary>int pointTag;LineRenderer line;SphereInfo localInfo;Collider col;Material localMaterial;Color colorLine = Color.white;SphereInfo tempInfo;Collider[] sphereRayToColliders;float tempDistance;void Start(){maxDistance = PointClampData.Instance.maxDistance;minDistance = PointClampData.Instance.minDistance;pointTag = LayerMask.GetMask(PointClampData.Instance.pointTag);line = GetComponent<LineRenderer>();localInfo = GetComponent<SphereInfo>();col = GetComponent<Collider>();localMaterial = GetComponent<Renderer>().material;}void Update(){ConnectMulti();UpdateActiveConnectionMulti();UpdatePassiveConnectionMulti();SetVisible();}/// <summary>发起连接</summary>void ConnectMulti(){if (localInfo.connectTarget != null){tempInfo = localInfo.connectTarget.GetComponent<SphereInfo>();if (tempInfo.connectSourceOne != col && tempInfo.connectSourceTwo != col && tempInfo.connectSourceThree != col){localInfo.connectTarget = null;}else{return;}}sphereRayToColliders = Physics.OverlapSphere(transform.position, maxDistance, pointTag);if (sphereRayToColliders == null || sphereRayToColliders.Length <= 0) return;for (int i = 0; i < sphereRayToColliders.Length; i++){tempInfo = sphereRayToColliders[i].GetComponent<SphereInfo>();if (tempInfo == localInfo) continue;if (tempInfo.connectSourceOne != null && tempInfo.connectSourceTwo != null && tempInfo.connectSourceThree != null) continue;if (col == tempInfo.connectTarget) continue;line.positionCount = 2;line.SetPosition(0, transform.position);line.SetPosition(1, sphereRayToColliders[i].transform.position);localInfo.connectTarget = sphereRayToColliders[i];colorLine.a = 1;localMaterial.color = colorLine;if (tempInfo.connectSourceOne == null)tempInfo.connectSourceOne = col;else if (tempInfo.connectSourceTwo == null)tempInfo.connectSourceTwo = col;else if (tempInfo.connectSourceThree == null)tempInfo.connectSourceThree = col;return;}}/// <summary>更新主动连接</summary>void UpdateActiveConnectionMulti(){if (localInfo.connectTarget == null) return;tempDistance = Vector3.Distance(transform.position, localInfo.connectTarget.transform.position);if (tempDistance > maxDistance){line.positionCount = 0;localInfo.connectTarget = null;}else{if (tempDistance < minDistance){colorLine.a = 1;}else{colorLine.a = 1 - (tempDistance / maxDistance);}line.SetPosition(0, transform.position);line.material.color = colorLine;}}/// <summary>更新被动连接</summary>void UpdatePassiveConnectionMulti(){if (localInfo.connectSourceOne == null && localInfo.connectSourceTwo == null && localInfo.connectSourceThree == null) return;if (localInfo.connectSourceOne != null){PassiveConnectionData(ref localInfo.connectSourceOne);}if (localInfo.connectSourceTwo != null){PassiveConnectionData(ref localInfo.connectSourceTwo);}if (localInfo.connectSourceThree != null){PassiveConnectionData(ref localInfo.connectSourceThree);}}void PassiveConnectionData(ref Collider collider){tempDistance = Vector3.Distance(transform.position, collider.transform.position);if (tempDistance > maxDistance){collider = null;}else{LineRenderer temp = collider.GetComponent<LineRenderer>();if (temp.positionCount != 0)temp.SetPosition(1, transform.position);}}/// <summary>设置小球显隐</summary>void SetVisible(){if (localInfo.connectTarget == null && localInfo.connectSourceOne == null && localInfo.connectSourceTwo == null && localInfo.connectSourceThree == null){colorLine.a = 0;localMaterial.color = colorLine;}}}

unity实现点线动画 免费下载相关推荐

  1. 【unity】转场动画

    参考博客: 1.unity 实现场景过度动画 unitypackage下载: 链接:https://pan.baidu.com/s/12tO2SU88w8hscriNT_QOWA 提取码:l7gz 2 ...

  2. unity demo免费下载:第三人称镜头移动+瞄准线+发射弧线球打击方块(方块可以识别受击方向)demo

    Unity: 第三人称视野移动+瞄准线+发射弧线球打击方块(方块可以识别受击方向)demo 功能描述: 相机能够根据鼠标滑动而移动(类似第三人称游戏镜头控制) 发射弧线的小球 相机视野有辅助线(瞄准线 ...

  3. Unity可自定义loading页的异步加载工具,免费下载,使用说明

    本文是针对ZTools中异步加载工具的使用说明,包含实现过程以及如何使用  免费下载地址:请到[ https://gitee.com/jacobkay/unity-ZTools-LoadSceneAs ...

  4. CSS 动画相关属性动态实例大全(82种),2023年祝福第二弹(送你一只守护兔)(下),守护兔源代码免费下载

    2023年春节祝福第二弹--送你一只守护兔(下) CSS 动画相关属性动态实例大全(82种).守护兔源代码免费下载 本文目录: 五.CSS3 动画相关属性实例大全 (1).CSS3的动画基本属性 (2 ...

  5. 2021Unity教程:Unity官方中文版免费下载方法(黑皮肤可选)无需破解!

    首先科普两个知识点: 1. Unity官方支持个人免费版,新的学习者和初创公司员工(公司财务规模低于10万美元一年)均可以使用.黑皮肤免费(Unity2019.3以上的版本),基本功能齐全,无需破解. ...

  6. Unity官方代言角色Unity Chan(Unity娘/优妮蒂/ユニティちゃん)模型免费下载

    Unity Chan Unity Chan就是下面这个角色啦 游戏引擎研发商Unity Technologies日本分公司Unity Technologie Japan日前宣布,自2014年4月7日起 ...

  7. unity 调用 海康 网络摄像头 免费下载

    微信号:ITComputerGraph 更多精彩内容,关注公众号<IT木子李> csdn积分规则导致资源下载次数越多,需要的积分越高,本着奉献精神,博主特把所有资源放到微信公众号,欢迎大家 ...

  8. unity 跨平台动态生成二维码 免费下载

    微信号:ITComputerGraph 更多精彩内容,关注公众号<IT木子李> csdn积分规则导致资源下载次数越多,需要的积分越高,本着奉献精神,博主特把所有资源放到微信公众号,欢迎大家 ...

  9. 银光类似web visio的节点连线控件Essential Diagram免费下载地址

    2019独角兽企业重金招聘Python工程师标准>>> Essential Diagram for Silverlight是一款功能强大的图解拓扑图控件,在XAML支持的情况下提供用 ...

最新文章

  1. Android ndk 安装教程 以及环境变量配置
  2. Xcode中Objc动态调用方法同时避免警告的几个办法
  3. Httpclient学习日记(一)
  4. c语言用法 我说火罐火车 刘华火车,五塘村社区建“火车头广场”
  5. Android开发之旅:组件生命周期(二)
  6. 运维基础(2)实用工具篇
  7. JAVA写同步栈_tomcat实现的同步队列和同步栈
  8. spring data jpa 的 in 查询 Specification 实现
  9. 堆和栈的区别(经典干货)
  10. 未來用工新趨勢_2019年社会化用工成新趋势
  11. 计算机室无线网络,在小型办公室中设置无线网络
  12. fly.io ruby on rails
  13. HTML、CSS要点精华
  14. 【Mysql】Mysql数据库查询“表空间”
  15. Archlinux笔记本发射热点create_ap
  16. loadrunnner3
  17. 网络邻居看不到其他计算机,在网上邻居中看不到自己的电脑也看不到别人的解决方法...
  18. 现代程序员 VS. 古典程序员,你属于哪一类?
  19. html5shiv和respond记录
  20. android 系统设置向导,详解Android 手机卫士设置向导页面

热门文章

  1. 【3D旋转墙】最简单的3d旋转墙
  2. matlab怎么绘制李萨如图形_MATLAB仿真李萨如图形小议
  3. iCloud退出时一直显示正在移除iCloud数据如何解决?
  4. CAN总线系统(一)---基础介绍
  5. linux系统取消虚拟键盘,关闭iOS虚拟键盘的六种方法
  6. 《C++ 开发从入门到精通》——1.2 开发工具——Visual C++
  7. PS2汉化1 字库处理
  8. 基于Java+Jsp实现的指定城市天气实时查询系统
  9. 何恺明团队新作!Transformer遇见Mask R-CNN哪家强?
  10. poweramp最完美设置_十段均衡器的设置和参数[附带推荐poweramp均衡器设置]