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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

OGEngine_粒子效果

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

粒子系統

粒子系統表示三維計算機圖形學中模擬一些特定的模糊現象的技術,而這些現象用其它傳統的渲染技術難以實現的真實感的 game physics。經常使用粒子系統模擬的現象有火、爆炸、煙、水流、火花、落葉、云、霧、雪、塵、流星尾跡或者象發光軌跡這樣的抽象視覺效果等等。OGengine開源引擎的粒子系統中包含粒子,粒子發射器,粒子修改器等表現粒子效果。這次做一個簡單的粒子效果。


自定義了一個MyParticle的類

  • public void setMyParticle(float pX, float pY, TextureRegion region, Scene pScene)

  • 復制代碼


    首先,我們需要選擇一個點發射器,所以我們選擇的是:

  • ? ?? ???/**

  • ? ?? ?? ?* 點粒子發射器

  • ? ?? ?? ?* @param pCenterX 發射中心點X

  • ? ?? ?? ?* @param pCenterY 發射中心點Y*/

  • public PointParticleEmitter(

  • ? ?? ?? ?? ?? ? final float pCenterX, final float pCenterY)

  • 復制代碼


    我們需要圖片來創建粒子效果,所以我們選擇SpriteParticleSystem

  • /**

  • *? ?? ???精靈粒子系統

  • *? ?? ???@param pParticleEmitter 粒子發射器

  • *? ?? ???@param pRateMinimum:一秒中能同時發射到屏幕上的粒子最小的數量

  • *? ?? ???@param pRateMaximum:一秒中能同時發射到屏幕上的粒子最大的數量

  • *? ?? ???@param pParticlesMaximum:屏幕上允許可以存活的最大的粒子數

  • *? ?? ???@param pTextureRegion:選擇表達的紋理*/?

  • public SpriteParticleSystem(

  • ? ?? ?? ?? ?? ? final IParticleEmitter pParticleEmitter,

  • ? ?? ?? ?? ?? ? final float pRateMinimum,?

  • ? ?? ?? ?? ?? ? final float pRateMaximum,

  • ? ?? ?? ?? ?? ? final int pParticlesMaximum,?

  • ? ?? ?? ?? ?? ? final ITextureRegion pTextureRegion,

  • ? ?? ?? ?? ?? ? final VertexBufferObjectManager pVertexBufferObjectManager)

  • 復制代碼


    接下來我們要對粒子做初始化并為其添加粒子修改器

  • /**粒子初始化*/

  • public void addParticleInitializer(final IParticleInitializer<T> pParticleInitializer)

  • /**添加粒子修改器*/

  • public void addParticleModifier (final IParticleInitializer<T> pParticleInitializer)

  • 復制代碼


    以下就是各種類型粒子的構造函數

  • /**

  • ? ?? ?? ?* 速率粒子初始化器

  • ? ?? ?? ?* @param 最小速率X

  • ? ?? ?? ?* @param 最大速率X

  • ? ?? ?? ?* @param 最小速率Y

  • ? ?? ?? ?* @param 最大速率Y*/

  • public VelocityParticleInitializer(

  • ? ?? ?? ?? ?? ? final float pMinVelocityX, final float pMaxVelocityX,?

  • ? ?? ?? ?? ?? ? final float pMinVelocityY, final float pMaxVelocityY)

  • 復制代碼

  • /**限時粒子初始化器

  • ? ?? ?? ?* @param pMinLifeTime 最小存在時間

  • ? ?? ?? ?* @param pMaxLifeTime 最大存在時間*/

  • public ExpireParticleInitializer(

  • ? ?? ?? ?? ?? ? final float pMinLifeTime, final float pMaxLifeTime)

  • 復制代碼

  • /**

  • ? ?? ?? ?* 縮放粒子修改器

  • ? ?? ?? ?* @pFromTime 開始時間

  • ? ?? ?? ?* @pToTime 結束時間

  • ? ?? ?? ?* @pFromScale 開始縮放值

  • ? ?? ?? ?* @pToScale 結束縮放值 */

  • public ScaleParticleModifier(

  • ? ?? ?? ?? ?? ? final float pFromTime, final float pToTime,?

  • ? ?? ?? ?? ?? ? final float pFromScale, final float pToScale)

  • 復制代碼

  • /**

  • ? ?? ?? ?* 透明粒子修改器

  • ? ?? ?? ?* @pFromTime 開始時間

  • ? ?? ?? ?* @pToTime 結束時間

  • ? ?? ?? ?* @pFromScale 開始透明值

  • ? ?? ?? ?* @pToScale 結束透明值 */

  • public AlphaParticleModifier(

  • ? ?? ?? ?? ?? ? final float pFromTime, final float pToTime,?

  • ? ?? ?? ?? ?? ? final float pFromAlpha, final float pToAlpha)

  • 復制代碼

    源碼:

  • public void setMyParticle(float pX, float pY, TextureRegion region, Scene pScene) {

  • ? ?? ???PointParticleEmitter particleEmitter = new PointParticleEmitter(pX, pY);

  • ? ?? ???SpriteParticleSystem mParticleSystem =?

  • ? ?? ?? ?? ?? ?? ?? ?? ?new SpriteParticleSystem(particleEmitter, 10, 10, 30, region,? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? pScene.getVertexBufferObjectManager());

  • ? ?? ???mParticleSystem.addParticleInitializer(

  • ? ?? ?? ?? ?? ?? ?? ?? ?new VelocityParticleInitializer<Sprite>(-150,150, -380, 0));

  • ? ?? ???mParticleSystem.addParticleInitializer(

  • ? ?? ?? ?? ?? ?? ?? ?? ?new ExpireParticleInitializer<Sprite>(5f, 6f));

  • ? ?? ???mParticleSystem.addParticleModifier(

  • ? ?? ?? ?? ?? ?? ?? ?? ?new ScaleParticleModifier<Sprite>(0f, 5f, 0, 1.3f));

  • ? ?? ???mParticleSystem.addParticleModifier(

  • ? ?? ?? ?? ?? ?? ?? ?? ?new AlphaParticleModifier<Sprite>(0.8f, 1, 0.2f, 1f));

  • ? ?? ???pScene.attachChild(mParticleSystem);

  • }

  • 復制代碼


    添加好效果后,將方法放在Scene中進行調用

  • MyParticle myParticle = new MyParticle();

  • myParticle.setMyParticle(

  • ? ?? ?? ?? ?? ? this.getCameraWidth()/2, this.getCameraHeight()*0.8f, ballRegion,?

  • ? ?? ?? ?? ?? ? TestScene.this);

  • 復制代碼

    http://www.eoeandroid.com/forum-863-1.html

    www.ogengine.com


    轉載于:https://blog.51cto.com/9165326/1439322

    總結

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

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