日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

cocos2dX 之CCParticle

發布時間:2025/3/20 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cocos2dX 之CCParticle 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

今天我們來看看粒子特效, 何為粒子特效, 為了模擬燃燒的火焰, 天空飄下來的血環, 滴落的小雨, 這些無規律變化的物體, 我們引進了粒子特效這個名詞, 粒子特效的原理是將無數的單個粒子組合使其呈現出固定形態,借由控制器,腳本來控制其總體或單個的運動,模擬出現真實的效果, 有朋友會問, 為什么我們不使用序列幀動畫呢, 由于序列幀動畫是固定的運動方式, 不能模擬出粒子的無規則運動, 所以我們才使用的粒子特效, 并且繪制的動畫多了, 會嚴重的影響幀率, cocos2dX里面的粒子特效優化的就還不錯, 能夠看到我們待會兒繪制出粒子之后幀率基本上不會發生多大的改變

CCParticleSystem是cocos2dX為我們提供的粒子系統, 我們來看看CCParticleSystem為我們提供了什么

產生粒子: 也被稱作粒子發射器
更新粒子狀態: 引擎會隨時間更新粒子的位置, 速度以及其它狀態
回收無效粒子: 當粒子的生存周期結束后, 會被系統回收
?因此, 為了創建一個粒子效果, 我們須要定義粒子怎樣產生以及狀態怎樣改變。

cocos2dX里面已經為我們提供了一些經常使用的粒子, 我們來看看有哪些:

CCParticleExplosion //爆炸粒子效果
CCParticleFireworks //煙花粒子效果
CCParticleFire //火焰粒子效果
CCParticleFlower //花束粒子效果
CCParticleGalaxy //星系粒子效果
CCParticleMeteor //流星粒子效果
CCParticleSpiral //漩渦粒子效果
CCParticleSnow //雪粒子效果
CCParticleSmoke //煙粒子效果
CCParticleSun //太陽粒子效果
CCParticleRain //雨粒子效果


經常使用的函數:

setTexture( CCTexture2D); //設置特效紋理貼圖

setAutoRemoveOnFinish( bool); //設置自己主動釋放true為自己主動釋放。
setPositionType( 移動類型) //設置移動類型

setStartColor( ccc4f); //設置粒子RGBA值

setBlendAdditive( bool); //是否加入混合

setAutoRemoveOnFinish( bool); //是否自己主動移除死亡粒子

移動類型:

kCCPositionTypeFree //自由模式: 粒子不與發射器聯系
kCCPositionTypeRelative //相對模式: 粒子發射器尾隨節點
kCCPositionTypeGrouped //相對模式: 粒子尾隨發射器


并且cocos2dX還同意我們自定義粒子使用:

CCParticleSystemQuad::create( plist文件);


嗯, 說了這么多, 我們還是先來看看怎樣創建一個粒子吧, 非常easy的:

//創建一個火焰粒子CCParticleSystem* particle = CCParticleFire::create();particle->setTexture( CCTextureCache::sharedTextureCache()->addImage( "CloseSelected.png"));//加入紋理貼圖particle->setAutoRemoveOnFinish( true); //設置自己主動移除 particle->setPosition( ccp( visibleSize.width / 2, 0));addChild( particle);

對, 就是這么簡單, 一個火焰粒子就做好了( 旁白: 你確定你沒有騙我?), 我們看看效果:



看看, 出來了吧, 幀率也是60, 沒有下降哦( 旁白: 還不是騙我了, 那是火焰么? 怎么感覺像鬼火一樣), 額, 這是我為了偷懶, 使用了那個藍色的關閉button造成的( 旁白: 必須換過來, 大半夜的, 你嚇人啊), 看著旁白妹紙快要發火了, 我還是決定換一張圖片吧, 話說這張看起來不錯啊, 我們再來看看效果:






看起來沒差別啊, 假設有人看出差別了, 請無視我的美術

嗯, 粒子特效就是這么簡單, 大家把其它的也加上去看看效果吧,?



我們再來看看自己定義粒子效果, 我這里使用的是紅孩兒工具箱, 這是粒子編輯界面:


我們來看看重力參數:

gravity( Point); //粒子系統的重力。

speed( float); //粒子們射出的速度。

speedVar( float); //速度變量

tangencialAccel( float); //粒子們的正切加速度

tangencialAccelVar( float); //粒子們正切加速度的變量

radialAccel( float); //粒子們的半徑加速度。

radialAccelVar( float); //粒子們半徑加速度的變量


半徑參數:

startRadius( float); //粒子的開始半徑

startRadiusVar( float); //開始半徑變量

endRadius( float); //粒子的結束半徑

endRadiusVar( float); //結束半徑變量

rotatePerSecond( float); //環繞一個來源點的每秒旋轉角度

rotatePerSecondVar( float); //每秒旋轉角度變量


常規參數:

startSize:粒子的初始尺寸(像素值)
startSizeVar
endSize:粒子的結束尺寸(假設你想讓粒子的開始大小同結束大笑同樣,就用一下kCCParticleStartSizeEqualToEndSize
endSizeVar
startColor :粒子開始顏色(ccColor4F)
startColorVar
endColor :粒子結束顏色
endColorVar
startSpin:僅用在CCParticleSystemQuad中,起始螺旋度
startSpinVar
endSpin:僅用在CCParticleSystemQuad中,結束螺旋度
endSpinVar
life粒子的生命生存時間,單位是秒
lifeVar
angle:粒子開始角度,float
angleVar
positon:CCPoint粒子位置
positonVar
centerOfGravity :CGPoint

我們在粒子編輯器里面做一個火焰:



保存起來, 我們將會得到一個plist文件, 這里面就保存了我們的粒子的配置, 我們直接使用就能夠了:


//加入自己定義粒子特效CCParticleSystem* particle2 = CCParticleSystemQuad::create( "fire.plist");particle2->setPosition( ccp( visibleSize.width - 60, 0));addChild( particle2);


看看效果:



有的朋友可能會出現故障, 假設出現故障了, 就看看plist文件最以下的圖片文件路徑對不正確:




好了 ?今天我們就到這里了, 晚安哦, 各位

總結

以上是生活随笔為你收集整理的cocos2dX 之CCParticle的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。