http://www.tairan.com/archives/5496#2 Cocos2d-x引擎提供了强大的粒子系统,它在模仿自然现象、物理现象及空间扭曲上具备得天独厚的优势,为我们实现一些真实自然而又带有随机性的特效(如爆炸、烟花、水流)提供了方便。尽管如此,它众多的粒子属性还是着
http://www.tairan.com/archives/5496#2
Cocos2d-x引擎提供了强大的粒子系统,它在模仿自然现象、物理现象及空间扭曲上具备得天独厚的优势,为我们实现一些真实自然而又带有随机性的特效(如爆炸、烟花、水流)提供了方便。尽管如此,它众多的粒子属性还是着实让人头疼。因为如果要想自己编码写出炫丽的粒子效果,这里有太多的属性需要手动设置和调节。不管是对新手还是资深的老油条程序员来说,都存在不同程度的不便性。
效果
所以,本文将结合 “天天爱消除” 游戏场景中的粒子特效,讲解如何使用粒子编辑器编辑实现飘飘扬扬往下飞落的的粒子效果。效果如下:
粒子编辑器的使用
现在网络中普遍使用的是 Particle Designer编辑器,不过它只支持在Mac系统下使用。对于像我这样的穷屌丝来说,怎么用的起!所以本文将介绍另一个粒子编辑器particle-editor的使用方法,它的功能同样强大,而且还支持在windows系统下使用。两种编辑器的用法大同小异,都可以把编辑出的粒子效果直接导出为plist文件。
下载地址
particle-editor的下载地址:
https://code.google.com/p/cocos2d-windows-particle-editor/downloads/detail?name=ParticleEditor%20V2.0.7z&can=2&q=
使用方法
particle-editor编辑器无需安装,下载解压后即可使用,它的编辑界面如下:
菜单栏的 Samples 下为用户提供了一些常用的粒子特效,如烟花、火、流星等,你可根据需要创建不同的粒子群。
属性讲解
编辑器的属性:
-
IsBackgroundMove 编辑器背景图片是否滚动,如果你觉得它动来动去的很烦人,你可以把它设置为False
-
IsSaveTextureImageData 是否把图片数据编码到文件里导出,这里我建议把它设置为False
-
Scale 编辑器画布缩放比例大小
编辑器的属性只影响编辑器内的预览效果,不对保存的.plist文件产生影响。而下面的所有属性都对应Cocos2dx中粒子系统的各属性,会直接影响生成的.plist文件。
主要属性:
-
Duration 发射器生存时间,即它可以发射粒子的时间,注意这个时间和粒子生存时间不同。单位秒,-1表示永远;粒子发射结束后可点击工具栏的播放按钮
再次发射
-
EmissionRate 每秒喷发的粒子数目
-
IsAutoRemoveOnFinish 粒子结束时是否自动删除
-
Mode 喷发器模式,有重力模式(Gravity)和半径模式(Radius,也叫放射模式)两种
-
TotalParticles 场景中存在的最大粒子数目,往往与EmissionRate配合起来使用
半径模式:半径模式可以使粒子以圆圈方式旋转,它也可以创造螺旋效果让粒子急速前进或后退。下列各属性只在半径模式下起作用。
-
EndRadius 结束半径
-
EndRadiusVar 结束半径变化范围,即结束半径值的范围在 (EndRadius – EndRadiusVar) 和 (EndRadius + EndRadiusVar )之间,下面类似。
-
RotatePerSecond 粒子每秒围绕起始点的旋转角度
-
RotatePerSecondVar 粒子每秒围绕起始点的旋转角度变化范围
-
StartRadius 初始半径
-
StartRadius 初始半径变化范围
重力模式:顾名思义,重力模式模拟重力,可让粒子围绕一个中心点移近或移远,它的优点是非常动态,而且移动有规则。下列各属性只在重力模式下起作用。
-
GravityX 重力X
-
GravityY 重力Y
-
RadiaAccel 粒子径向加速度,即平行于重力方向的加速度
-
RadiaAccelVar 粒子径向加速度变化范围
-
Speed 速度
-
SpeedVar 速度变化范围
-
TangentialAccel 粒子切向加速度,即垂直于重力方向的加速度
-
TangentialAccelVar 粒子切向加速度变化范围
生命属性:
-
Life 粒子生命,即粒子的生存时间
-
LifeVar 粒子生命变化范围
大小属性:
-
EndSize 粒子结束时的大小,-1表示和初始大小一致
-
EndSize 粒子结束大小的变化范围
-
StartSize 粒子的初始大小
-
StartSize 粒子初始大小的变化范围
角度属性:
-
Angle 粒子角度
-
AngleVar 粒子角度变化范围
颜色属性:
-
EndColor 粒子结束颜色
-
EndColorVar 粒子结束颜色变化范围
-
StartColor 粒子初始颜色
-
StartColorVar 粒子初始颜色变化范围
如果你不想编辑出五颜六色的粒子效果,那应该把EndColorVar,StartColorVar尽量设置为(0, 0, 0, 0)。
位置属性:
-
PositionType 粒子位置类型,有自由模式(Free)、相对模式(Relative)和打组模式(Grouped)三种
-
PosVarX 发射器位置的横向变化范围,烟花出现在位置相对中心位置的像素偏移
-
PosVarY 发射器位置的纵向变化范围
-
SourcePositionX 发射器原始X坐标位置
-
SourcePositionY 发射器原始Y坐标位置
Free自由模式,相对于屏幕自由,不会随粒子节点移动而移动(可产生火焰、蒸汽等效果);Relative相对模式,相对于被绑定的Node静止,粒子发射器会随Node移动而移动,可用于制作移动角色身上的特效等等;Grouped打组模式是相对于发射点的,粒子随发射器移动而移动。
自旋属性:
-
EndSpin 粒子结束自旋角度
-
EndSpinVar 粒子结束自旋角度变化范围
-
StartSpin 粒子开始自旋角度
-
StartSpinVar 粒子开始自旋角度变化范围
纹理渲染属性:
-
DestBlendFunc 目的纹理的混合模式
-
SrcBlendFunc 源纹理的混合模式
-
TextureImageData 纹理数据
-
TexturePath 纹理路径,目前只可为Debug.win32目录下文件名
Cocos2dx使用OpenGL混合原理对图形进行渲染绘制。混合就是指把两种颜色混在一起,具体一点就是把某一像素位置原来的颜色和将要画上去的颜色,通过某种方式混在一起,从而实现特殊的效果。它是一种常用的技巧,通常可以用来实现半透明,你也可以通过不同的设置得到不同的混合结果,产生一些有趣或者奇怪的图象。
这里的源纹理和目标纹理跟绘制的顺序有关,先绘制的纹理是目标纹理,后绘制的纹理理所应当的就成为了源纹理。下面具体来看看混合模式的属性值。
DestBlendFunc和SrcBlendFunc的常用值为以下几种情况:
-
GL_ZERO: 表示使用0.0作为因子,实际上相当于不使用这种颜色参与混合运算。
-
GL_ONE: 表示使用1.0作为因子,实际上相当于完全的使用了这种颜色参与混合运算。
-
GL_SRC_ALPHA:表示使用源颜色的alpha值来作为因子。
-
GL_DST_ALPHA:表示使用目标颜色的alpha值来作为因子。
-
GL_ONE_MINUS_SRC_ALPHA:表示用1.0减去源颜色的alpha值来作为因子。
-
GL_ONE_MINUS_DST_ALPHA:表示用1.0减去目标颜色的alpha值来作为因子。
最常用的组合模式有两种:GL_ONE和GL_ONE_MINUS_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA和GL_SRC_ALPHA。
介绍完编辑器的各属性项以后,我们就可以根据需要编辑出不同效果的粒子效果了。下图是类似天天爱消除游戏中的“雪花”粒子特效。
资源图片 ,在使用粒子编辑器编辑粒子时,应放在粒子编辑器的ParticleEditor目录下;导出plist文件时,应把资源图片和plist文件放一起。该资源下载地址:https://github.com/renshan/btnTest/tree/master/snow-plist
注意:这里目的纹理的混合模式设置为GL_ONE,源纹理的混合模式设置为GL_ONE_MINUS_SRC_ALPHA。
cocos2dx中加载使用plist文件
只要编辑出粒子效果,那在cocos2d-x引擎中加载plist文件就非常简单了。使用以下代码来读取粒子效果:
<span><span>//贴背景图片</span><span>Sprite</span><span>*</span><span> pSprite </span><span>=</span><span>Sprite</span><span>::</span><span>create</span><span>(</span><span>"IMG1.jpg"</span><span>);</span><span> pSprite</span><span>-></span><span>setPosition</span><span>(</span><span>Point</span><span>(-</span><span>20</span><span>,</span><span>0</span><span>));</span><span> pSprite</span><span>-></span><span>setAnchorPoint</span><span>(</span><span>Point</span><span>(</span><span>0</span><span>,</span><span>0</span><span>));</span><span>this</span><span>-></span><span>addChild</span><span>(</span><span>pSprite</span><span>,</span><span>0</span><span>);</span><span>//读取粒子效果</span><span>ParticleSystem</span><span>*</span><span> m_emitter1 </span><span>=</span><span>ParticleSystemQuad</span><span>::</span><span>create</span><span>(</span><span>"snow.plist"</span><span>);</span><span> m_emitter1</span><span>-></span><span>retain</span><span>();</span><span>ParticleBatchNode</span><span>*</span><span>batch </span><span>=</span><span>ParticleBatchNode</span><span>::</span><span>createWithTexture</span><span>(</span><span>m_emitter1</span><span>-></span><span>getTexture</span><span>());</span><span> batch</span><span>-></span><span>addChild</span><span>(</span><span>m_emitter1</span><span>);</span><span> addChild</span><span>(</span><span>batch</span><span>,</span><span>10</span><span>);</span><span> m_emitter1</span><span>-></span><span>release</span><span>();</span><span>//或读取粒子效果</span><span>//ParticleSystem* m_emitter1 = ParticleSystemQuad::create("snow.plist");</span><span>//addChild(m_emitter1);</span></span>
这里ParticleBatchNode可以引用且只可以引用1个texture(一个图片文件,一个texture图集),增加到SpriteBatchNode中的ParticleSystem都是在OpenGL ES调用绘图函数时绘制的。
如果ParticleSystem没有增加到ParticleBatchNode中,OpenGL ES会调用每个粒子系统的绘图函数,这样做效率会比较低。
好了,基本上就这些,比想象中简单多了吧,点此可下载工程。

MySQLとSQLiteの主な違いは、設計コンセプトと使用法のシナリオです。1。MySQLは、大規模なアプリケーションとエンタープライズレベルのソリューションに適しており、高性能と高い並行性をサポートしています。 2。SQLiteは、モバイルアプリケーションとデスクトップソフトウェアに適しており、軽量で埋め込みやすいです。

MySQLのインデックスは、データの取得をスピードアップするために使用されるデータベーステーブル内の1つ以上の列の順序付けられた構造です。 1)インデックスは、スキャンされたデータの量を減らすことにより、クエリ速度を改善します。 2)B-Tree Indexは、バランスの取れたツリー構造を使用します。これは、範囲クエリとソートに適しています。 3)CreateIndexステートメントを使用して、createIndexidx_customer_idonorders(customer_id)などのインデックスを作成します。 4)Composite Indexesは、createIndexIDX_CUSTOMER_ORDERONORDERS(Customer_Id、Order_date)などのマルチコラムクエリを最適化できます。 5)説明を使用してクエリ計画を分析し、回避します

MySQLでトランザクションを使用すると、データの一貫性が保証されます。 1)StartTransactionを介してトランザクションを開始し、SQL操作を実行して、コミットまたはロールバックで送信します。 2)SavePointを使用してSave Pointを設定して、部分的なロールバックを許可します。 3)パフォーマンスの最適化の提案には、トランザクション時間の短縮、大規模なクエリの回避、分離レベルの使用が合理的に含まれます。

MySQLの代わりにPostgreSQLが選択されるシナリオには、1)複雑なクエリと高度なSQL関数、2)厳格なデータの整合性と酸コンプライアンス、3)高度な空間関数が必要、4)大規模なデータセットを処理するときに高いパフォーマンスが必要です。 PostgreSQLは、これらの側面でうまく機能し、複雑なデータ処理と高いデータの整合性を必要とするプロジェクトに適しています。

MySQLデータベースのセキュリティは、以下の測定を通じて達成できます。1。ユーザー許可管理:CreateUSERおよびGrantコマンドを通じてアクセス権を厳密に制御します。 2。暗号化された送信:SSL/TLSを構成して、データ送信セキュリティを確保します。 3.データベースのバックアップとリカバリ:MySQLDUMPまたはMySQLPumpを使用して、定期的にデータをバックアップします。 4.高度なセキュリティポリシー:ファイアウォールを使用してアクセスを制限し、監査ロギング操作を有効にします。 5。パフォーマンスの最適化とベストプラクティス:インデックス作成とクエリの最適化と定期的なメンテナンスを通じて、安全性とパフォーマンスの両方を考慮に入れます。

MySQLのパフォーマンスを効果的に監視する方法は? MySqladmin、ShowGlobalStatus、PerconAmonitoring and Management(PMM)、MySQL EnterpriseMonitorなどのツールを使用します。 1. mysqladminを使用して、接続の数を表示します。 2。showglobalstatusを使用して、クエリ番号を表示します。 3.PMMは、詳細なパフォーマンスデータとグラフィカルインターフェイスを提供します。 4.mysqlenterprisemonitorは、豊富な監視機能とアラームメカニズムを提供します。

MySQLとSQLServerの違いは次のとおりです。1)MySQLはオープンソースであり、Webおよび埋め込みシステムに適しています。2)SQLServerはMicrosoftの商用製品であり、エンタープライズレベルのアプリケーションに適しています。ストレージエンジン、パフォーマンスの最適化、アプリケーションシナリオの2つには大きな違いがあります。選択するときは、プロジェクトのサイズと将来のスケーラビリティを考慮する必要があります。

高可用性、高度なセキュリティ、優れた統合を必要とするエンタープライズレベルのアプリケーションシナリオでは、MySQLの代わりにSQLServerを選択する必要があります。 1)SQLServerは、高可用性や高度なセキュリティなどのエンタープライズレベルの機能を提供します。 2)VisualStudioやPowerbiなどのMicrosoftエコシステムと密接に統合されています。 3)SQLSERVERは、パフォーマンスの最適化に優れた機能を果たし、メモリが最適化されたテーブルと列ストレージインデックスをサポートします。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

SublimeText3 中国語版
中国語版、とても使いやすい

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

WebStorm Mac版
便利なJavaScript開発ツール

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。
