一般信息和控件
在黑色区域使用鼠标左键来激活粒子系统。 按住鼠标右键来保持粒子系统跟随鼠标移动。
使用按键1到9来快速切换预设置。 预设值会自动加载和保存。 Escape键退出编辑器。 使用TAB键来隐藏界面,SPACE键来运行粒子预设置。
粒子系统的绝大多数参数是使用一组滑块来控制的。 有两种基本控制方案。一个min/max滑块组为各自的参数定义了一个常量范围。 一组strt/end/var滑块, 定义了开始值结束值和开始值在strt和end范围之间的改变量。
使用锁定按钮()来强迫min/max或strt/end 参数保持相同值进行变化。其他的控制选项都相当常见,对你来说不会是什么难题。
系统参数
这组参数定义了整个粒子系统的行为:
System lifetime
定义了粒子系统生成新的粒子的时候粒子所持续的时间。 如果continuous复选框被选中 - 粒子将一直存在。
Emission
定义每秒生成多少新的粒子。
Particle lifetime
定义一个指定的粒子存活多久时间。
Texture
指定16个精灵中哪个将用于该粒子。
Blend mode
指定粒子的混合模式:additive - 一个粒子颜色被加入屏幕上已存在的图像中,产生光照效果, blend - 一个粒子颜色与屏幕上已存在的图像混合。
粒子移动
这组参数定义了指定粒子的移动相关信息:
Direction
这是一个角度。定义了粒子放射的方向。如果relative复选框被激活 - 角度将被看做是与当前粒子系统的移动方向相关。
Spread
这个角度定义了粒子放射的扇形角度。 例如,如果它是40, 放射粒子的方向则在Direction-20和Direction+20之间。 如果Spread是360,Direction参数将变得没有意义,因为整个圆周角度都被覆盖。
Start speed
定义粒子的初始速度范围。
Gravity
定义粒子的重力值范围(从根本上讲,它只是一个沿着Y轴的加速度)。
Radial acceleration
定义方向指向粒子系统中心的加速度范围值。 以此可以创建向中心吸引粒子的粒子系统。
Tangential acceleration
定义方向垂直于向心加速度的加速度的范围值。以此来确保粒子绕着粒子系统的中心旋转。
Particle Appearance
这组参数定义了指定粒子的外观形态:
Particle size
定义了指定粒子的初始和最终大小以及初始大小的改变量。注意粒子越大所需要渲染的时间越长。
Particle spin
此参数定义了指定粒子绕着它的锚点旋转的速度。 设置初始和终止旋转速度以及它的初始旋转速度改变量。
Particle alpha
定义了指定粒子的初始和终止不透明度以及它的初始不透明度改变量。
Particle color
定义了指定粒子的初始和终止颜色以及他们的初始颜色改变量。
Presets & Stuff
此标题下罗列了的各种编辑器信息和命令:
Preset No.
使用此组按钮在粒子系统的多种预设值之间进行切换。 预设自动被夹在和保存在文件名为particle1.psi - particle9.psi的文件中。
Show bounding box
如果此复选框被激活,将显示粒子系统的边界框。 因此你可以校正参数以保证整个粒子系统位于期望的空间范围中。需要注意的是当计算边界框时, 只考虑粒子的位置,而忽略粒子精灵的维数。
Particles alive
显示当前有多少粒子存活。保证此值尽可能的小,以确保你的程序运行的高效性。 影响此值的两个参数是Emission和Particle lifetime。
FPS
显示当前的每秒帧数。
HGE粒子系统编辑器初始化文件
初始化文件
HGE粒子系统编辑器的系统变量保存在particleed.ini文件中。 因此你可以编辑它们来修改编辑器的属性。当前支持的参数如下:
FullScreen
如果为1,编辑器将以全屏模式运行。如果=0,编辑器将以窗口模式运行,默认是0。
Background
指定一个图片作为编辑时的背景。
粒子图像文件
另一个你可能比较感兴趣的文件可能就是particles.png了, 它存有精灵。它包含了16个32x32像素大小的用于编辑器中渲染粒子系统的图像。 你可以同时选择这些图像中的任意一个或者整个文件。同样,默认图像也是黑白的,但是你可以使用一些彩色的。 如果你打算使用混合模式而不是叠加模式,记得将你的PNG文件以alpha-channel保存。
粒子系统的小提示
你可以使用粒子系统来模拟自然现象,比如烟,火焰,岩浆,火花,喷泉,放射效果等等。 你也可以创造一些类似于魔法的逼真效果。 这里是一些如何在你的游戏中使用粒子系统的提示和方法:
一个粒子系统中允许同时存在的最大粒子数目是500。 如果超过了这个数值,将不会产生新的粒子,直至当前的某些粒子死亡。
使用尽可能小的粒子和尽可能少的粒子数来实现预期效果。这两个参数会影响程序的性能。
可以在同一位置放置两个不同参数的粒子系统来实现一个非常复杂的实现。 例如你可以将一个有火焰效果的粒子系统放置在一个有烟雾效果的粒子系统之上。
实时修改粒子系统的参数来适应不同的情况。 例如你可以使一个系统喷射烟雾,当玩家接近时,修改它的值使之转变为火。 或者你可以周期性的修改nEmission参数来模仿潮汐。
实时将一个粒子系统改变为另一个。要实现它只需要对两个粒子系统的预设的hgeParticleSystemInfo 成员进行线性填补即可。唯一不可以修改的参数是粒子系统的精灵。
将一个有HGEBLEND_ALPHAADD混合模式的精灵放在一个粒子系统中并随机的或者根据粒子的存活数量缩放它来模拟光线。
试着用一个HGEBLEND_ALPHABLEND模式下的着色的粒子精灵来创建一个卡通效果。
试着用一个带有偏心锚点的精灵。
使用hgeAnimation类来取代hgeSprite进行初始化行为, 你可以创建一个带有动态粒子的粒子系统。 此外,虽然hgeSprite没有可以实现的虚函数,而且唯一可以修改的参数只有纹理坐标, 你仍旧可以使用从hgeSprite类派生而来的自制的带有附加功能的类来创建粒子系统。
要使一个粒子系统沿着一条复杂的路径移动, 尽量使用短的直线段或圆弧并且并使其沿路径快速移动。 或者试着让粒子系统沿着一条利萨如曲线一动。 或者将一个粒子系统附加在一个移动对象上。
让粒子系统跟着鼠标移动。这是经常让玩家感到兴奋的交互方式。
hgeParticleSystem helper class
hgeParticleSystem是一个用于高级2D粒子系统的帮助类。
hgeParticleSystem方法
构造函数 创建并初始化hgeParticleSystem对象。
运算符 hgeParticleSystem运算符。
Update 更新粒子系统。
MoveTo 将粒子系统移到一个新的位置。
Transpose 增加恒定的坐标平移。
SetScale 缩放粒子系统。
FireAt 在指定的屏幕位置激活粒子系统。
Fire 激活粒子系统。
Stop 停止粒子系统。
Render 将粒子系统渲染到屏幕上。
TrackBoundingBox 开启/关闭粒子系统的边界框跟踪。
GetBoundingBox 返回当前粒子系统的边界框。
GetParticlesAlive 返回当前活动的粒子数量。
GetPosition 返回当前粒子系统的位置。
GetTransposition 返回当前粒子系统的坐标偏移。
GetScale 返回粒子系统的当前缩放。
GetAge 返回粒子系统的存活周期(age)。
关联信息
hgeParticleSystem数据成员
hgeParticleSystemInfo结构
hgeParticleSystemInfo Structure
|
解释说明:
用于渲染粒子的指向hgeSprite对象的指针。 在这里精灵的最有用的参数肯可能就是纹理,渲染模式和锚点了。 除了hgeSprite本身以外,你还可以使用从它派生出来的hgeAnimation或其他类。
nEmission
每秒放射的离子数。注意一个粒子系统中允许同时存在的最大粒子数为500。 如果超过此数值,新的粒子系统将不会被创建直到当前的某些粒子进程终结。 同时存在的粒子数取决于nEmission, fParticleLifeMin和fParticleLifeMax成员
fLifetime
粒子系统放射粒子的时间周期(以秒为单位)。 从调用Fire方法开始直到这段时间过去后,粒子系统将不再放射。 如果 = -1.0 粒子系统将一直放射粒子直到手动停止该系统。
fParticleLifeMin
指定粒子的最小生命周期,以秒为单位。
fParticleLifeMax
指定粒子的最大生命周期,以秒为单位。
fDirection
这是一个角度,以弧度为单位,定义了粒子放射的方向。
fSpread
这是一个角度,以弧度为单位,定义了粒子放射的扇形范围。例如如果该值是0.5,放射粒子的方向将位于 fDirection-0.5和fDirection+0.5范围之内。而如果fSpread是2*pi,fDirection 参数将变得没有任何意义,因为整个粒子的圆周都将被覆盖,也就是说放射将是全方位的。
bRelative
如果为true,fDirection成员将被看作是与当前粒子系统的移动方向关联。如果为false, fDirection成员将被直接处理(0代表直线向前)。
fSpeedMin
指定粒子的最小起始移动速度,以像素/每秒为单位。
fSpeedMax
指定粒子的最大起始移动速度,以像素/每秒为单位。
fGravityMin
指定粒子系统的最小重力值。 重力从基本上说只是一个沿着Y轴的加速度。
fGravityMax
指定粒子系统的最大重力值。 重力从基本上说只是一个沿着Y轴的加速度。
fRadialAccelMin
指定粒子的直接朝向粒子系统中心的加速度最小值。
fRadialAccelMax
指定粒子的直接朝向粒子系统中心的加速度最大值。
fTangentialAccelMin
指定粒子的与径向加速度垂直的加速度最小值(xy:也就是切线加速度,切点为径向加速度方向与圆周的焦点)。
fTangentialAccelMax
指定粒子的与径向加速度垂直的加速度最大值(xy:也就是切线加速度,切点为径向加速度方向与圆周的焦点)。
fSizeStart
指定粒子的起始缩放因子。1.0代表默认的精灵大小。
fSizeEnd
指定粒子的终止缩放因子。1.0代表默认的精灵大小。
fSizeVar
起始的缩放变量。从0.0(代表没有变化)到1.0(代表从fSizeStart到fSizeEnd的随机变量)。
fSpinStart
指定粒子的起始旋转量,以弧度为单位。
fSpinEnd
指定粒子的终止旋转量,以弧度为单位。
fSpinVar
起始的旋转变量。从0.0(代表没有变化)到1.0(代表从fSpinStart到fSpinEnd的随机变量)。
colColorStart
指定粒子的起始颜色和不透明度。详情参考hgeColor类。
如果colColorStart.r == -1将开启一个特殊的颜色模式:粒子系统不再选择它的精灵的RGB,而是实际用它本身已经存在的颜色(其他粒子也是一样)。 只有每个粒子的透明度会被改变。
colColorEnd
指定粒子的终止颜色和不透明度。详情参考hgeColor类。
fColorVar
起始颜色变量从0.0(代表没有变化)到1.0(代表从起始颜色到终止颜色的随机变量)。
fAlphaVar
起始不透明度变量从0.0(代表没变化)到1.0(代表从开始不透明度到终止透明度的随机变量)。
需要
头文件: hgeparticle.h