Skip to main content
AR论坛
 首页 » 资源教程 » Unity3D教程

用Unity模仿CSGO里的火焰效果

2016年09月27日 17:43:394320蛮牛网

CSGO里的火焰效果和真实的情况比较像,能沿着遮挡物前进,如下是模仿效果。

用Unity模仿CSGO里的火焰效果 Unity3D教程 第1张

思路比较简单,开始想的是一圈一圈发出去,但是前圈与后圈的联系不好做,换种思路,每个方向发射一条线,这样根据上一个位置的方位先向前进,如果前面有遮挡,则计算好新的位置与方向,反之前面没有遮挡,选择合适的位置,并从这个方向的上面向下检测,检测这个方向的垂直位置有没遮挡,如果有遮挡,计算新的方向与位置,没有,则表明延展不下去。如下图所示:

用Unity模仿CSGO里的火焰效果 Unity3D教程 第2张

相关主要代码:

用Unity模仿CSGO里的火焰效果 Unity3D教程 第3张

如上代码每句都加上了注释,我们添加了一个radius参数,用来表示每次前进的步子大小,radius越小,则越密集,然后添加一个height参数用来表示垂直方向升降能力,可以看下图。

确定一条线上显示后,我们只要考虑沿着周围全部扩展就行,在这我们用level表示扩展多少层,层数越多,我们每条线的相隔的角度也应该越小,如下效果。

相关代码:

这些蓝线确定了火焰沿线步局,但是现在最中心会比较密集,我们需要有选择的是否生成,如下图:

相关代码:

这样就能简单在每层生成合适的个数,其中最上面有个prefabHeight,用来控制模型中心与下边的高度,用来控制生成的模型贴着遮挡物,如图:

完整代码在原文链接中哦~

直接放到一个物体上就可以了,其中radius设为相应的火焰半径大小就可,如果要密一些,降低一些就行,相应offset参数用来设定水平与垂直上的偏移,免的给人太规律了,代码上都有详细注释,可以自己改动。

评论列表暂无评论
发表评论