## **粒子(PARTICLE)**
粒子是一种图形资源,在粒子系统中可以定义其中粒子的一些属性。但是这些属性并不能针对其中某一个粒子进行直接操作,而是通过定义粒子和其所属的系统来进行修改。他们可以在游戏中创造一些非常华丽的效果(或者细微精妙的效果)(例如:爆炸、雪花、漫天星星、雨以及碎片等效果)的同时不消耗CPU的资源。
* * * * *
**粒子系统的基本设置分三步进行,最后一步为可选,这取决于你希望房间内创建怎样的粒子效果:**
* **创建一个粒子系统(particle system):**粒子系统就像一个容器,我们将使用它来保存我们不同的粒子类型(**particle types**),以备使用。我们使用代码为我们的粒子定义一系列视觉和行为,然后将它们放在“容器”中,以便我们随时随地取出并随时随地使用它们。
* **创建粒子类型(particle types):**粒子类型是图形效果本身。你可以有许多不同的类型,每个类型都有自己的颜色范围,透明度,大小和运动轨迹,要注意你不能控制单个粒子。根据你定义的一系列参数,被创造出来的粒子将随机地传播它们所选择的行为。
* **创建发射器(emitters):**发射器是可选项,可用于从非常明确的限制其内爆发或流动的粒子。由于您可以使用part_particles_create和part_particles_create_colour函数从任何实例创建粒子,所以发射器并不是必须的,但它们并不总是适合每种情况。
* * * * *
**虽然粒子可以创造不错的效果,但是有些规则还是必须要遵守的,除非你想让你的游戏变得很卡并最终崩溃:**
* 粒子系统,粒子类型和发射器都会占用内存,所以你应该非常小心使用它们,因为很容易造成内存泄漏,从而减慢并最终导致游戏崩溃。解决这个问题的方法之一是建立一个全局系统,在游戏开始时定义所有的东西,并在最后移除,但是如果你想要一个动态系统,那么不需要创建每个粒子和发射器(以及系统本身)。
* 虽然粒子在CPU上的资源消耗非常少,但是它们仍然需要CPU做一些处理,所以在同屏不能同时超过4万个粒子。所以必须将它们限制在达到特定效果所必需的范围内。
* 如果你定义了自己的粒子精灵,而不是使用系统自带的14个精灵之一,你应该尽量保持它们尽可能的小,以达到你需要的效果。
* 粒子不与任何东西相互作用。如果您需要它们与您的用户或您的游戏中的任何其他实例进行任何类型的交互,您应该考虑使用实例,而不是作为纯图形的粒子
* 在技术上并没有限制您创建粒子系统、发射器和粒子的数量,但是你应该把所有的东西都限制在尽可能小的数量上,以尽可能低的内存使用
* 在移动设备上,请注意使用粒子,因为如果它们覆盖屏幕的大部分区域(移动设备上的过度绘制是造成速度下降的主要原因之一),绘制速度会变得非常慢。
* 对于HTML5,没有添加混合(blend),除非启用了WebGL,否则不能进行混合颜色。
- 简言
- 额外接口
- asset_get_index
- asset_get_type
- 粒子(PARTICLE)
- 简单粒子系统
- effect_create_below
- effect_create_above
- effect_clear
- ef_all
- 粒子系统
- 粒子系统的创建
- part_system_exists
- part_system_create
- part_system_create_layer
- part_system_get_layer
- part_system_layer
- part_system_clear
- part_system_depth
- part_system_position
- part_system_destroy
- part_particles_clear
- part_particles_count
- 系统绘图
- part_system_automatic_update
- part_system_automatic_draw
- part_system_update
- part_system_drawit
- part_system_draw_order
- 直接创建粒子
- part_particles_create
- part_particles_create_colour
- 粒子类型
- part_type_exists
- part_type_create
- part_type_destroy
- part_type_clear
- part_type_shape
- part_type_sprite
- part_type_size
- part_type_scale
- part_type_speed
- part_type_direction
- part_type_gravity
- part_type_orientation
- part_type_colour_mix
- part_type_colour_rgb
- part_type_colour_hsv
- part_type_colour1
- part_type_colour2
- part_type_colour3
- part_type_alpha1
- part_type_alpha2
- part_type_alpha3
- part_type_blend
- part_type_life
- part_type_step
- part_type_death
- 粒子发射器
- part_emitter_exists
- part_emitter_create
- part_emitter_clear
- part_emitter_region
- part_emitter_burst
- part_emitter_stream
- part_emitter_destroy
- part_emitter_destroy_all
- 数组(array)
- 数据结构(Data structures)
- 心得分享
- ds_exists
- ds_set_precision
- 网格(grid)
- ds_grid_create
- ds_grid_destroy
- ds_grid_width
- ds_grid_height
- ds_grid_resize
- ds_grid_clear
- ds_grid_set
- ds_grid_set_disk
- ds_grid_set_grid_region
- ds_grid_set_region
- ds_grid_shuffle
- ds_grid_sort
- ds_grid_get
- ds_grid_get_max
- ds_grid_get_mean
- ds_grid_get_min
- ds_grid_get_sum
- ds_grid_get_disk_max
- ds_grid_get_disk_mean
- ds_grid_get_disk_min
- ds_grid_get_disk_sum
- ds_grid_add
- ds_grid_add_region
- ds_grid_add_disk
- ds_grid_add_grid_region
- ds_grid_multiply
- ds_grid_multiply_disk
- ds_grid_multiply_region
- ds_grid_multiply_grid_region
- ds_grid_value_exists
- ds_grid_value_disk_exists
- ds_grid_value_x
- ds_grid_value_y
- ds_grid_value_disk_x
- ds_grid_value_disk_y
- ds_grid_copy
- ds_grid_read
- ds_grid_write
- 列表(list)
- 映射(map)
- 队列(Queues)
- 优先队列(Priority Queues)
- 堆栈(stack)