Unity 闪电特效之 闪电链效果的简单实现
来源:网络收集 点击: 时间:2024-08-21打开Unity,新建一个工程,具体如下图

在工程中新建两个 GameObject 调整好合适位置,为了方便观察,可以再其下添加子物体 Cube,具体如下图


在工程中新建脚本ChainLightning,双击打开编辑,具体如下图

ChainLightning 脚本的具体代码和代码说明如下图


ChainLightning 脚本的具体内容如下:
usingSystem.Collections.Generic;
usingUnityEngine;
//普通的类,加上ExecuteInEditMode,就可以在编辑器模式中运行
publicclassChainLightning:MonoBehaviour{
publicfloatdetail=1;//增加后,线条数量会减少,每个线条会更长。
publicfloatdisplacement=15;//位移量,也就是线条数值方向偏移的最大值
publicTransformEndPostion;//链接目标
publicTransformStartPosition;
publicfloatyOffset=0;
privateLineRenderer_lineRender;
privateListVector3_linePosList;
privatevoidAwake()
{_lineRender=GetComponentLineRenderer();
_linePosList=newListVector3();
}
privatevoidUpdate()
{
//判断是否暂停,未暂停则进入分支
if(Time.timeScale!=0)
{
_linePosList.Clear();
Vector3startPos=Vector3.zero;
Vector3endPos=Vector3.zero;
if(EndPostion!=null)
{
endPos=EndPostion.position+Vector3.up*yOffset;
}
if(StartPosition!=null)
{
startPos=StartPosition.position+Vector3.up*yOffset;
}
//获得开始点与结束点之间的随机生成点
CollectLinPos(startPos,endPos,displacement);
_linePosList.Add(endPos);
//把点集合赋给LineRenderer
_lineRender.SetVertexCount(_linePosList.Count);
for(inti=0,n=_linePosList.Count;in;i++)
{
_lineRender.SetPosition(i,_linePosList);
}
}
}
//收集顶点,中点分形法插值抖动
privatevoidCollectLinPos(Vector3startPos,Vector3destPos,floatdisplace)
{
//递归结束的条件
if(displacedetail)
{
_linePosList.Add(startPos);
}
else
{
floatmidX=(startPos.x+destPos.x)/2;
floatmidY=(startPos.y+destPos.y)/2;
floatmidZ=(startPos.z+destPos.z)/2;
midX+=(float)(UnityEngine.Random.value-0.5)*displace;
midY+=(float)(UnityEngine.Random.value-0.5)*displace;
midZ+=(float)(UnityEngine.Random.value-0.5)*displace;
Vector3midPos=newVector3(midX,midY,midZ);
//递归获得点
CollectLinPos(startPos,midPos,displace/2);
CollectLinPos(midPos,destPos,displace/2);
}
}
}
6/9脚本编译正确回到Unity,导入一张闪电图,并新建一个Material,把Shader改为Particles/Additive把导入的贴图给 Material 赋上,具体如下图



在场景中,新建一个空物体,把脚本挂载上去,适当的调整脚本参数的值,效果如下图


在调整Material的参数,使得只出现一条闪电,具体如下图

最终效果(作为参照的Cube可以删掉)如下图

您的支持,是我们不断坚持知识分享的动力,若帮到您,还请帮忙投票有得;若有疑问,请留言
UNITY闪电特效闪电链效果版权声明:
1、本文系转载,版权归原作者所有,旨在传递信息,不代表看本站的观点和立场。
2、本站仅提供信息发布平台,不承担相关法律责任。
3、若侵犯您的版权或隐私,请联系本站管理员删除。
4、文章链接:http://www.ff371.cn/art_1147495.html