之前我们已经学习了《捕鱼达人3》中Cocos引擎3D技术的实现:加载鱼的模型和播放动画 和 鱼身上的波光处理,今天我们接着学习游戏中如何制作攻击时的闪电特效。 《捕鱼达人》中的闪电,是
“ ”(via:Cocos引擎中文站)
之前我们已经学习了《捕鱼达人3》中Cocos引擎3D技术的实现:加载鱼的模型和播放动画 和 鱼身上的波光处理,今天我们接着学习游戏中如何制作攻击时的闪电特效。
《捕鱼达人》中的闪电,是通过以下几个步骤来实现的:
一、构建三角形条带。
二、采用随机函数来扰动条带顶点。
三、快速反复循环一,二步骤。
这个过程主要使用到以下三个类:
(1)VertexVector:用于存储顶点和索引的类。
(2)Noise:噪音处理类,用于进行顶点扰动,使顶点不断的小幅变化。
(3)LightLineRender:实现闪电效果的类。
具体的代码实现,可以参看注释。我们要关心的是LightLineRender类,它封装了闪电效果,并提供了相应的参数调节选项,我们学会了使用它就可以做出闪电链的效果。
我们打开 cpp-empty-test ,在 HelloWorld::init 函数中加入以下代码:
- //线条容器
- std::vector<LightLineRender::Line> lines;
- //设置线条位置
- //第一段闪电的起点和终点
- Vec3 segStart = Vec3(-50,-50,-8);
- Vec3 segEnd = Vec3(50,50,-8);
- lines.push_back( LightLineRender::Line( segStart, segEnd, 0 ) );
- //第二段闪电的起点和终点
- segStart = Vec3(50,50,-8);
- segEnd = Vec3(-50,50,-8);
- lines.push_back( LightLineRender::Line( segStart, segEnd, 0 ) );
- //第三段闪电的起点和终点
- segStart = Vec3(-50,50,-8);
- segEnd = Vec3(50,-50,-8);
- lines.push_back( LightLineRender::Line( segStart, segEnd, 0 ) );
- //第四段闪电的起点和终点
- segStart = Vec3(50,-50,-8);
- segEnd = Vec3(0,100,-8);