【IOS-COCOS2D游戏开发之十】添加粒子系统特效并解决粒子特效与LAYER之间的坐标问题;...
轉載自【黑米GameDev街區】 原文鏈接:?http://www.himigame.com/iphone-cocos2d/472.html
一直以來Himi特別想在游戲中使用粒子系統,但是之前做J2me與Android中發現使用粒子做的效果都會造成游戲運行內存的一個負擔,所以一直很遺憾,那么在iOS游戲開發中,可以說必須要使用粒子啦,還是蘋果硬件給力;看過我一開始剛寫cocos2d博文的時候我就說過因為cocos2d的粒子編輯器很給力,所以也是我選用cocos2d引擎的一部分原因;
粒子編輯器名稱:ParticleDesigner,界面截圖如下:
前兩天粒子編輯器購買成功(很便宜,不到10美金,比圖片打包工具TP便宜多了),耍了兩天后有些后悔,因為這個粒子編輯器雖然看界面像是開發編輯器的作者提供了很多的特效一樣,其實都是cocos2d中例子罷了,但是反過來想,人家給做成可視編輯省去的時間遠遠超值于編輯器的錢了!咳咳,又扯遠了,回到正題;
至于編輯器或者在cocos2d中添加粒子特效的方法,網上N多資料和教程,這里就不多說了,下面簡單說今天重點的問題;
為了讓大家更清楚的知道問題所在,我新建一個cocos2d的項目:
1. 首先在屏幕中繪制字符串(將一個CCLabelTTF對象添加到當前Layer中);
| 1 2 3 4 | CCLabelTTF *label = [CCLabelTTF labelWithString:@"Welcome--Himi" fontName:@"Marker Felt" fontSize:64];?? CGSize size = [[CCDirector sharedDirector] winSize];?? label.position =??ccp( size.width /2 , size.height/2 );?? [self addChild: label]; |
2.然后我將使用粒子編輯器生成的一個類似隕石導出一個名為“himi.plist”粒子文件(其中包含粒子的所有屬性),將此文件導入項目中并添加到當前layer中;
| 1 2 3 4 5 6 | //添加一個粒子特效?? CCParticleSystem *tempSystem = [ARCH_OPTIMAL_PARTICLE_SYSTEM particleWithFile:@"himi.plist"];?? //tempSystem.positionType=kCCPositionTypeRelative;//備注1?? tempSystem.positionType=kCCPositionTypeFree;?? tempSystem.position=ccp(100,100);???? [self addChild:tempSystem]; |
這里的備注1,大家留意下,后面會詳細說,這里先無視;到此,整個layer中添加了一個字符串和一個粒子特效!運行項目 截圖如下:
這里大概說下,粒子我設定的是一直循環播放的,是通過編輯器修改的參數,OK,下面開始到重點了:
現在我使用一個選擇器 [self scheduleUpdate];?,讓當前的layer的X坐標不斷+3,代碼如下:
| 1 2 3 | -(void)update:(ccTime)time{?? ????self.position=ccp(self.position.x+3,self.position.y);?? } |
這里多嘴一句,在cocos2d坐標的修改盡可能的使用整體賦值,比如更改坐標,雖然這里只是更改x軸,但是我仍然對整個position進行的修改;
然后大家都應該知道,當前的layer上的粒子特效和CCLabelTTF都會跟著移動,但是對不起,這里出現問題,運行截圖如下:
這里大家肯定很奇怪,粒子效果應該是垂直的,但是實際卻不是,其實這個問題真的很細節,因為一般粒子特效都是用于很短的時間進行播放-消失;
這里大概說下,其實特效的的發射器也就是粒子的起始座標其實確實一直跟著layer移動了,但是創建出來后的粒子卻一直顯示在創建時候的座標進行自身運動,并沒有按照我們想象的移動方式進行整體移動;
講了這么多其實這個問題一句代碼就解決了,那就是最上面創建粒子特效的代碼的備注1,
| 1 | //tempSystem.positionType=kCCPositionTypeRelative;//備注1 |
這個positionType其實就是設置當前粒子特效中所有粒子的位置類型,默認情況下是自由模式,代碼如下:
| 1 | kCCPositionTypeFree |
那么備注1的,kCCPositionTypeRelative ?是相對模式,所以只要這里對粒子進行設置位置類型為相對模式即可,問題解決;
OK,童鞋們該說了,這么容易描述清楚的問題與解決方案直接說不就好了 =。 ?=我也這么想的,但是這里我需要說兩點:
1.如果博文上來就針對問題,巴拉巴拉的說一堆,那么對于還沒接觸粒子這一塊的童鞋而言,一點用沒有,完全是丈二的和尚,xxxx你懂的~
2.講的這么多,還是我老說的一句話:細節決定成敗;其實細節也如同基礎,基礎不牢,何談提高?!
好啦,這一篇就到這里;
總結
以上是生活随笔為你收集整理的【IOS-COCOS2D游戏开发之十】添加粒子系统特效并解决粒子特效与LAYER之间的坐标问题;...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 理科的至尊思想:进制之间的转换
- 下一篇: IDEA创建Web Project图解