为主角增加特殊技能火焰箭, 需要用到粒子系统
以前看的例子中有做好的粒子效果, 于是直接搬来用
目前我理解的粒子系统, 是一个发射器, 按照一定的规律向周围发射粒子(方向, 速度, 衰减, 颜色)
发射器同时发射n个粒子, 待粒子衰减后, 回收, 继续发射, 就能实现比较炫的效果
cocos2dx的粒子系统, 是由一个png图片和一个plist文件组成, 和tiled_map有点类似.
png图片定义了粒子的纹理, plist定义了粒子系统的特点, 入发射规律
用喷射粒子来模拟飞行的火箭, 难点就是控制喷射方向
首先,要把喷射的初始方向设为x轴正向
_jet->setAngle(0);
然后,假设飞行方向的向量是vec, 则粒子系统的方向要设置成
_jet->setRotation(atan2f(vec.y, vec.x) * 180 / 3.1416);
角度和旋转为何要相差180度, 是因为喷射方向和运动方向是相反的
顺便提一下, 普通的箭的旋转公式如下
arrow->setRotation((-1.0) * vec.getAngle() * 180.0 / 3.1416);
箭的图片的原始方向也是x轴正向
用爆炸粒子来模拟火箭的爆炸
当火箭到目标的距离的平方小于3时(必须小于3), 关闭喷射粒子, 触发爆炸粒子
千万不要设置爆炸粒子的setSourcePosition, 只能设成(0, 0)
因为这个属性貌似是规定喷射点到粒子系统的偏移的, 一开始我脑残的设了一下, 结果很费解, 卡了几个小时
自己制作粒子效果可以用ParticleDesigner, 以后需要了再用