粒子编辑器名称:ParticleDesigner,界面截图如下:
前两天成功购买了粒子编辑器(很便宜,不到10美元,比图像打包工具TP便宜很多)。 使用了两天后,我就后悔了,因为虽然这个粒子编辑器的界面看上去是开发该编辑器的作者提供的,和很多特效一样,其实只是cocos2d中的例子,但反过来想,可视化编辑节省的时间远远超过花在编辑器上的钱! 咳咳,我又跑题了,回到正题;
至于cocos2d中的编辑器或者添加粒子效果的方法,网上有大量的资料和教程3D交通工具,这里不再赘述。 我们简单说一下今天的关键问题;
为了让大家更清楚的了解问题,我新建了一个cocos2d项目:
1、首先在屏幕上绘制一个字符串(在当前Layer中添加一个CCLabelTTF对象);
CCLabelTTF*label=[CCLabelTTFlabelWithString:@"欢迎--冰见"fontName:@"MarkerFelt"fontSize:64]; CGSizesize=[[CCDirectorsharedDirector]winSize]; label.position=ccp(size.width/2,size.height/2); [selfaddChild:标签];
2.然后我将使用粒子编辑器生成的类似陨石的粒子文件导出一个名为“himi.plist”的粒子文件(其中包含粒子的所有属性),将此文件导入到项目中并将其添加到当前图层中;
//添加粒子特效 CCParticleSystem*tempSystem=[ARCH_OPTIMAL_PARTICLE_SYSTEMarticleWithFile:@"himi.plist"]; //tempSystem.positionType=kCCPositionTypeRelative; //备注1 tempSystem.positionType=kCCPositionTypeFree; tempSystem.position=ccp(100,100); [selfaddChild:tempSystem];
这里注意1,请注意cocos粒子编辑器教程,后面会详细解释,暂时忽略; 至此,整个图层已经添加了字符串和粒子效果! 运行项目截图如下:
我们简单说一下吧。 我设置粒子循环播放,通过编辑器修改参数。 好吧,我们进入正题:
现在我使用选择器[self ScheduleUpdate]; 保持当前图层的X坐标+3。 代码如下:
-(void)update:(ccTime)time{ self.position=ccp(self.position.x+3,self.position.y); }
这里多说一句,修改cocos2d坐标时音乐,尽量使用整体赋值,比如改变坐标。 虽然我这里只是改变了x轴,但是我还是修改了整个位置;
那么大家应该知道,当前图层上的粒子效果和CCLabelTTF都会相应移动,但是很抱歉,这里有一个问题。 运行截图如下:
看到这里大家一定会感到惊讶。 粒子效果应该是垂直的,但实际上不是。 其实这个问题真的很详细,因为一般粒子效果的播放和消失都是在很短的时间内;
我在这里简单说一下。 事实上,特效的发射器(即粒子的起始坐标)确实随图层一起移动。 然而,创建的粒子始终显示创建时的坐标并自行移动。 它并不按照我们想象的整体运动模式运动;
说了这么多,一行代码就可以解决这个问题,就是最上面创建粒子效果的代码的注释1。
//tempSystem.positionType=kCCPositionTypeRelative;//备注1
这个positionType实际上设置了当前粒子效果中所有粒子的位置类型。 默认情况下,它是免费模式。 代码如下:
kCCPositionTypeFree
然后注意1,kCCPositionTypeRelative是相对模式,所以这里只要将粒子的位置类型设置为相对模式,问题就解决了;
好了,到了你们说的时间了。 很容易把问题和解决方案描述清楚然后说不=。 =我也是这么认为的,但是这里我需要说两点:
1、如果博文只针对问题,讲了很多,那么对于还没有接触过颗粒的童鞋来说是没有任何用处的。 他们完全就像是身高两尺的修士一样。 你知道xxxx~
2、说了这么多,还是我常说的一句话:细节决定成败; 事实上,细节就像基础。 基础不扎实,如何提高? !
好了,这篇文章就到这里,咱们继续忙吧; 现在时间是:灵城1.24,哎cocos粒子编辑器教程,最新博文都是晚上发的,第二天就没人能看到了,=。 =