## **粒子(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)