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) 인덱스는 스캔 한 데이터의 양을 줄임으로써 쿼리 속도를 향상시킵니다. 2) B-Tree Index는 균형 잡힌 트리 구조를 사용하여 범위 쿼리 및 정렬에 적합합니다. 3) CreateIndex 문을 사용하여 CreateIndexIdx_customer_idonorders (customer_id)와 같은 인덱스를 작성하십시오. 4) Composite Indexes는 CreateIndexIdx_customer_orderOders (Customer_id, Order_Date)와 같은 다중 열 쿼리를 최적화 할 수 있습니다. 5) 설명을 사용하여 쿼리 계획을 분석하고 피하십시오

MySQL에서 트랜잭션을 사용하면 데이터 일관성이 보장됩니다. 1) STARTTRANSACTION을 통해 트랜잭션을 시작한 다음 SQL 작업을 실행하고 커밋 또는 롤백으로 제출하십시오. 2) SavePoint를 사용하여 부분 롤백을 허용하는 저장 지점을 설정하십시오. 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. MySQLENTERPRISOMITOR는 풍부한 모니터링 기능 및 경보 메커니즘을 제공합니다.

MySQL과 SqlServer의 차이점은 1) MySQL은 오픈 소스이며 웹 및 임베디드 시스템에 적합합니다. 2) SQLServer는 Microsoft의 상용 제품이며 엔터프라이즈 수준 애플리케이션에 적합합니다. 스토리지 엔진의 두 가지, 성능 최적화 및 응용 시나리오에는 상당한 차이가 있습니다. 선택할 때는 프로젝트 규모와 향후 확장 성을 고려해야합니다.

고 가용성, 고급 보안 및 우수한 통합이 필요한 엔터프라이즈 수준의 응용 프로그램 시나리오에서는 MySQL 대신 SQLServer를 선택해야합니다. 1) SQLServer는 고 가용성 및 고급 보안과 같은 엔터프라이즈 수준의 기능을 제공합니다. 2) VisualStudio 및 Powerbi와 같은 Microsoft Ecosystems와 밀접하게 통합되어 있습니다. 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은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.
