Unity案例-实现心电图效果
👉关于作者
众所周知,人生是一个漫长的流程,不断克服困难,不断反思前进的过程。在这个过程中会产生很多对于人生的质疑和思考,于是我决定将自己的思考,经验和故事全部分享出来,以此寻找共鸣!!!
专注于Android/Unity和各种游戏开发技巧,以及各种资源分享(网站、工具、素材、源码、游戏等)
👉前提
小空是开发医疗产品软件的,所以心电图是必须要绘制的效果。刚开始的时候小空是准备使用一个闪烁粒子预制体,然后利用代码进行不断的创建,但是想想总感觉哪里不对。一直没有真实的动手进行下去。
直到某一天突然的灵光乍现:完全可以利用一个粒子的拖尾拖尾以及DOTween的路径实现。
先看效果图
👉实践过程
此次过程我会尽量还原整个从零到有的过程, 而非一上来就是设计好的步骤。
首先我们导入DOTween插件:
导入后先不用管他,先创建一个粒子,改粒子的坐标是(-5,0,0),然后设置他们的属性如下:
如上图修改了【持续时间】【起始生命周期】【起始大小】
其中主要是持续时间和起始大小,哦,对了,还有速度,因为后面我们会用DOTween来控制粒子的移动。
上图中,发射模块设置粒子为1,形状模块其实什么都可以,只要大小是0即可,因为只需要她保持1个且静止状态。
然后我们找到拖尾模块,勾选上,勾选世界空间(不选无效果),拖尾的宽度需要小一些,这样可以凸显出心电图头部的进度感觉。
我们创建一个材质,Shader为Legacy Shaders/Particles/Additive。
Texture直接选择Default-Particle即可。
接着我们打开粒子的渲染器模块,先将材质赋值给材质和拖尾材质属性(后面为了更完美我们会换材质)。
在DOTween Path脚本的下方Waypoints,里面是路径点,当然了你也可以利用快捷键创建删除,只不过这是具体的坐标点,写起来更加方便而已。
我们先创建个简单的直线心电图吧:增加一个坐标点
运行起来看看吧:
还算不错,增加点波折数据点再试试。
运行效果:
看起来有些像了,但是又不完美,那么我们回忆回忆:心电图大致应该由什么组成?
应该是由一个点带头+一个流星似的拖尾,所以我们完善下:
一个点材质:心电图_拖尾和一个拖尾材质:心电图_点,分别赋值给粒子的渲染器中材质和拖尾材质选项。
看结果
拖尾相比之前确实好了些,但是发现还是不咋地:折线看起来并不像预期那样贴合路线轨迹。
那么我们修改【粒子拖尾模块的顶点距离为0】,再看看。
这次发现确实和真实的轨迹很接近了,但是还是不对啊:明显感觉折弯出粒子重叠严重啊。
没错,出现这个的原因就是我们将【粒子拖尾模块的最小顶点距离改为0】导致的,但是不改为0效果又不是按照既定轨道再走。
经过与好友讨论思考,这个问题其实原因在于****Shader
有两种解决方式:
-
去掉模糊半透明效果,该为实体直线。直接将【心电图_拖尾】的Shader改为【Unlit/Color】即可。如果拖尾线条看着粗,那就在缩小下拖尾宽度。恩,看起来不错嘛
-
保留原来的内容,只修改线条宽度,达到足够细了,进而欺骗眼睛,并不完美。
-
有的大佬一眼就看出了关键,实际效果取决于Shader,内置的不满足,自己动手写一个Shader就行了,但是小空这方面知识匮乏,暂无方案,欢迎大佬们留言。
总结:
利用一个带有拖尾的粒子移动来实现心电图,而移动则利用DOTween实现。实现起来操作简单,在不消耗性能下,粒子可实现的心电图色彩很丰富。
好了,整个过程就是如上了,为心电图提供了个思路,但是具体的业务肯定更复杂的,比如心电图数据不同怎么随时更新,比如心电图和心脏脉搏做同步,更多的操作就需要各位大佬们多多实践啦。
👉其他
📢作者:小空和小芝中的小空
📢转载说明:务必注明来源:https://zhima.blog.csdn.net/ https://juejin.cn/user/426576084
📢欢迎点赞👍收藏🌟留言📝
- 点赞
- 收藏
- 关注作者
评论(0)