class_gpuparticles2d.rst 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705
  1. :github_url: hide
  2. .. DO NOT EDIT THIS FILE!!!
  3. .. Generated automatically from Godot engine sources.
  4. .. Generator: https://github.com/godotengine/godot/tree/master/doc/tools/make_rst.py.
  5. .. XML source: https://github.com/godotengine/godot/tree/master/doc/classes/GPUParticles2D.xml.
  6. .. _class_GPUParticles2D:
  7. GPUParticles2D
  8. ==============
  9. **Inherits:** :ref:`Node2D<class_Node2D>` **<** :ref:`CanvasItem<class_CanvasItem>` **<** :ref:`Node<class_Node>` **<** :ref:`Object<class_Object>`
  10. A 2D particle emitter.
  11. .. rst-class:: classref-introduction-group
  12. Description
  13. -----------
  14. 2D particle node used to create a variety of particle systems and effects. **GPUParticles2D** features an emitter that generates some number of particles at a given rate.
  15. Use the :ref:`process_material<class_GPUParticles2D_property_process_material>` property to add a :ref:`ParticleProcessMaterial<class_ParticleProcessMaterial>` to configure particle appearance and behavior. Alternatively, you can add a :ref:`ShaderMaterial<class_ShaderMaterial>` which will be applied to all particles.
  16. 2D particles can optionally collide with :ref:`LightOccluder2D<class_LightOccluder2D>`, but they don't collide with :ref:`PhysicsBody2D<class_PhysicsBody2D>` nodes.
  17. .. rst-class:: classref-introduction-group
  18. Tutorials
  19. ---------
  20. - :doc:`Particle systems (2D) <../tutorials/2d/particle_systems_2d>`
  21. - `2D Particles Demo <https://godotengine.org/asset-library/asset/118>`__
  22. - `2D Dodge The Creeps Demo (uses GPUParticles2D for the trail behind the player) <https://godotengine.org/asset-library/asset/515>`__
  23. .. rst-class:: classref-reftable-group
  24. Properties
  25. ----------
  26. .. table::
  27. :widths: auto
  28. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  29. | :ref:`int<class_int>` | :ref:`amount<class_GPUParticles2D_property_amount>` | ``8`` |
  30. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  31. | :ref:`float<class_float>` | :ref:`amount_ratio<class_GPUParticles2D_property_amount_ratio>` | ``1.0`` |
  32. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  33. | :ref:`float<class_float>` | :ref:`collision_base_size<class_GPUParticles2D_property_collision_base_size>` | ``1.0`` |
  34. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  35. | :ref:`DrawOrder<enum_GPUParticles2D_DrawOrder>` | :ref:`draw_order<class_GPUParticles2D_property_draw_order>` | ``1`` |
  36. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  37. | :ref:`bool<class_bool>` | :ref:`emitting<class_GPUParticles2D_property_emitting>` | ``true`` |
  38. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  39. | :ref:`float<class_float>` | :ref:`explosiveness<class_GPUParticles2D_property_explosiveness>` | ``0.0`` |
  40. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  41. | :ref:`int<class_int>` | :ref:`fixed_fps<class_GPUParticles2D_property_fixed_fps>` | ``30`` |
  42. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  43. | :ref:`bool<class_bool>` | :ref:`fract_delta<class_GPUParticles2D_property_fract_delta>` | ``true`` |
  44. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  45. | :ref:`float<class_float>` | :ref:`interp_to_end<class_GPUParticles2D_property_interp_to_end>` | ``0.0`` |
  46. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  47. | :ref:`bool<class_bool>` | :ref:`interpolate<class_GPUParticles2D_property_interpolate>` | ``true`` |
  48. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  49. | :ref:`float<class_float>` | :ref:`lifetime<class_GPUParticles2D_property_lifetime>` | ``1.0`` |
  50. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  51. | :ref:`bool<class_bool>` | :ref:`local_coords<class_GPUParticles2D_property_local_coords>` | ``false`` |
  52. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  53. | :ref:`bool<class_bool>` | :ref:`one_shot<class_GPUParticles2D_property_one_shot>` | ``false`` |
  54. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  55. | :ref:`float<class_float>` | :ref:`preprocess<class_GPUParticles2D_property_preprocess>` | ``0.0`` |
  56. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  57. | :ref:`Material<class_Material>` | :ref:`process_material<class_GPUParticles2D_property_process_material>` | |
  58. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  59. | :ref:`float<class_float>` | :ref:`randomness<class_GPUParticles2D_property_randomness>` | ``0.0`` |
  60. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  61. | :ref:`float<class_float>` | :ref:`speed_scale<class_GPUParticles2D_property_speed_scale>` | ``1.0`` |
  62. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  63. | :ref:`NodePath<class_NodePath>` | :ref:`sub_emitter<class_GPUParticles2D_property_sub_emitter>` | ``NodePath("")`` |
  64. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  65. | :ref:`Texture2D<class_Texture2D>` | :ref:`texture<class_GPUParticles2D_property_texture>` | |
  66. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  67. | :ref:`bool<class_bool>` | :ref:`trail_enabled<class_GPUParticles2D_property_trail_enabled>` | ``false`` |
  68. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  69. | :ref:`float<class_float>` | :ref:`trail_lifetime<class_GPUParticles2D_property_trail_lifetime>` | ``0.3`` |
  70. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  71. | :ref:`int<class_int>` | :ref:`trail_section_subdivisions<class_GPUParticles2D_property_trail_section_subdivisions>` | ``4`` |
  72. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  73. | :ref:`int<class_int>` | :ref:`trail_sections<class_GPUParticles2D_property_trail_sections>` | ``8`` |
  74. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  75. | :ref:`Rect2<class_Rect2>` | :ref:`visibility_rect<class_GPUParticles2D_property_visibility_rect>` | ``Rect2(-100, -100, 200, 200)`` |
  76. +-------------------------------------------------+---------------------------------------------------------------------------------------------+---------------------------------+
  77. .. rst-class:: classref-reftable-group
  78. Methods
  79. -------
  80. .. table::
  81. :widths: auto
  82. +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  83. | :ref:`Rect2<class_Rect2>` | :ref:`capture_rect<class_GPUParticles2D_method_capture_rect>` **(** **)** |const| |
  84. +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  85. | void | :ref:`convert_from_particles<class_GPUParticles2D_method_convert_from_particles>` **(** :ref:`Node<class_Node>` particles **)** |
  86. +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  87. | void | :ref:`emit_particle<class_GPUParticles2D_method_emit_particle>` **(** :ref:`Transform2D<class_Transform2D>` xform, :ref:`Vector2<class_Vector2>` velocity, :ref:`Color<class_Color>` color, :ref:`Color<class_Color>` custom, :ref:`int<class_int>` flags **)** |
  88. +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  89. | void | :ref:`restart<class_GPUParticles2D_method_restart>` **(** **)** |
  90. +---------------------------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  91. .. rst-class:: classref-section-separator
  92. ----
  93. .. rst-class:: classref-descriptions-group
  94. Signals
  95. -------
  96. .. _class_GPUParticles2D_signal_finished:
  97. .. rst-class:: classref-signal
  98. **finished** **(** **)**
  99. Emitted when all active particles have finished processing. When :ref:`one_shot<class_GPUParticles2D_property_one_shot>` is disabled, particles will process continuously, so this is never emitted.
  100. \ **Note:** Due to the particles being computed on the GPU there might be a delay before the signal gets emitted.
  101. .. rst-class:: classref-section-separator
  102. ----
  103. .. rst-class:: classref-descriptions-group
  104. Enumerations
  105. ------------
  106. .. _enum_GPUParticles2D_DrawOrder:
  107. .. rst-class:: classref-enumeration
  108. enum **DrawOrder**:
  109. .. _class_GPUParticles2D_constant_DRAW_ORDER_INDEX:
  110. .. rst-class:: classref-enumeration-constant
  111. :ref:`DrawOrder<enum_GPUParticles2D_DrawOrder>` **DRAW_ORDER_INDEX** = ``0``
  112. Particles are drawn in the order emitted.
  113. .. _class_GPUParticles2D_constant_DRAW_ORDER_LIFETIME:
  114. .. rst-class:: classref-enumeration-constant
  115. :ref:`DrawOrder<enum_GPUParticles2D_DrawOrder>` **DRAW_ORDER_LIFETIME** = ``1``
  116. Particles are drawn in order of remaining lifetime.
  117. .. _class_GPUParticles2D_constant_DRAW_ORDER_REVERSE_LIFETIME:
  118. .. rst-class:: classref-enumeration-constant
  119. :ref:`DrawOrder<enum_GPUParticles2D_DrawOrder>` **DRAW_ORDER_REVERSE_LIFETIME** = ``2``
  120. .. rst-class:: classref-item-separator
  121. ----
  122. .. _enum_GPUParticles2D_EmitFlags:
  123. .. rst-class:: classref-enumeration
  124. enum **EmitFlags**:
  125. .. _class_GPUParticles2D_constant_EMIT_FLAG_POSITION:
  126. .. rst-class:: classref-enumeration-constant
  127. :ref:`EmitFlags<enum_GPUParticles2D_EmitFlags>` **EMIT_FLAG_POSITION** = ``1``
  128. Particle starts at the specified position.
  129. .. _class_GPUParticles2D_constant_EMIT_FLAG_ROTATION_SCALE:
  130. .. rst-class:: classref-enumeration-constant
  131. :ref:`EmitFlags<enum_GPUParticles2D_EmitFlags>` **EMIT_FLAG_ROTATION_SCALE** = ``2``
  132. Particle starts with specified rotation and scale.
  133. .. _class_GPUParticles2D_constant_EMIT_FLAG_VELOCITY:
  134. .. rst-class:: classref-enumeration-constant
  135. :ref:`EmitFlags<enum_GPUParticles2D_EmitFlags>` **EMIT_FLAG_VELOCITY** = ``4``
  136. Particle starts with the specified velocity vector, which defines the emission direction and speed.
  137. .. _class_GPUParticles2D_constant_EMIT_FLAG_COLOR:
  138. .. rst-class:: classref-enumeration-constant
  139. :ref:`EmitFlags<enum_GPUParticles2D_EmitFlags>` **EMIT_FLAG_COLOR** = ``8``
  140. Particle starts with specified color.
  141. .. _class_GPUParticles2D_constant_EMIT_FLAG_CUSTOM:
  142. .. rst-class:: classref-enumeration-constant
  143. :ref:`EmitFlags<enum_GPUParticles2D_EmitFlags>` **EMIT_FLAG_CUSTOM** = ``16``
  144. Particle starts with specified ``CUSTOM`` data.
  145. .. rst-class:: classref-section-separator
  146. ----
  147. .. rst-class:: classref-descriptions-group
  148. Property Descriptions
  149. ---------------------
  150. .. _class_GPUParticles2D_property_amount:
  151. .. rst-class:: classref-property
  152. :ref:`int<class_int>` **amount** = ``8``
  153. .. rst-class:: classref-property-setget
  154. - void **set_amount** **(** :ref:`int<class_int>` value **)**
  155. - :ref:`int<class_int>` **get_amount** **(** **)**
  156. Number of particles emitted in one emission cycle.
  157. .. rst-class:: classref-item-separator
  158. ----
  159. .. _class_GPUParticles2D_property_amount_ratio:
  160. .. rst-class:: classref-property
  161. :ref:`float<class_float>` **amount_ratio** = ``1.0``
  162. .. rst-class:: classref-property-setget
  163. - void **set_amount_ratio** **(** :ref:`float<class_float>` value **)**
  164. - :ref:`float<class_float>` **get_amount_ratio** **(** **)**
  165. The ratio of particles that should actually be emitted. If set to a value lower than ``1.0``, this will set the amount of emitted particles throughout the lifetime to ``amount * amount_ratio``. Unlike changing :ref:`amount<class_GPUParticles2D_property_amount>`, changing :ref:`amount_ratio<class_GPUParticles2D_property_amount_ratio>` while emitting does not affect already-emitted particles and doesn't cause the particle system to restart. :ref:`amount_ratio<class_GPUParticles2D_property_amount_ratio>` can be used to create effects that make the number of emitted particles vary over time.
  166. \ **Note:** Reducing the :ref:`amount_ratio<class_GPUParticles2D_property_amount_ratio>` has no performance benefit, since resources need to be allocated and processed for the total :ref:`amount<class_GPUParticles2D_property_amount>` of particles regardless of the :ref:`amount_ratio<class_GPUParticles2D_property_amount_ratio>`.
  167. .. rst-class:: classref-item-separator
  168. ----
  169. .. _class_GPUParticles2D_property_collision_base_size:
  170. .. rst-class:: classref-property
  171. :ref:`float<class_float>` **collision_base_size** = ``1.0``
  172. .. rst-class:: classref-property-setget
  173. - void **set_collision_base_size** **(** :ref:`float<class_float>` value **)**
  174. - :ref:`float<class_float>` **get_collision_base_size** **(** **)**
  175. Multiplier for particle's collision radius. ``1.0`` corresponds to the size of the sprite.
  176. .. rst-class:: classref-item-separator
  177. ----
  178. .. _class_GPUParticles2D_property_draw_order:
  179. .. rst-class:: classref-property
  180. :ref:`DrawOrder<enum_GPUParticles2D_DrawOrder>` **draw_order** = ``1``
  181. .. rst-class:: classref-property-setget
  182. - void **set_draw_order** **(** :ref:`DrawOrder<enum_GPUParticles2D_DrawOrder>` value **)**
  183. - :ref:`DrawOrder<enum_GPUParticles2D_DrawOrder>` **get_draw_order** **(** **)**
  184. Particle draw order. Uses :ref:`DrawOrder<enum_GPUParticles2D_DrawOrder>` values.
  185. .. rst-class:: classref-item-separator
  186. ----
  187. .. _class_GPUParticles2D_property_emitting:
  188. .. rst-class:: classref-property
  189. :ref:`bool<class_bool>` **emitting** = ``true``
  190. .. rst-class:: classref-property-setget
  191. - void **set_emitting** **(** :ref:`bool<class_bool>` value **)**
  192. - :ref:`bool<class_bool>` **is_emitting** **(** **)**
  193. If ``true``, particles are being emitted. :ref:`emitting<class_GPUParticles2D_property_emitting>` can be used to start and stop particles from emitting. However, if :ref:`one_shot<class_GPUParticles2D_property_one_shot>` is ``true`` setting :ref:`emitting<class_GPUParticles2D_property_emitting>` to ``true`` will not restart the emission cycle until after all active particles finish processing. You can use the :ref:`finished<class_GPUParticles2D_signal_finished>` signal to be notified once all active particles finish processing.
  194. .. rst-class:: classref-item-separator
  195. ----
  196. .. _class_GPUParticles2D_property_explosiveness:
  197. .. rst-class:: classref-property
  198. :ref:`float<class_float>` **explosiveness** = ``0.0``
  199. .. rst-class:: classref-property-setget
  200. - void **set_explosiveness_ratio** **(** :ref:`float<class_float>` value **)**
  201. - :ref:`float<class_float>` **get_explosiveness_ratio** **(** **)**
  202. How rapidly particles in an emission cycle are emitted. If greater than ``0``, there will be a gap in emissions before the next cycle begins.
  203. .. rst-class:: classref-item-separator
  204. ----
  205. .. _class_GPUParticles2D_property_fixed_fps:
  206. .. rst-class:: classref-property
  207. :ref:`int<class_int>` **fixed_fps** = ``30``
  208. .. rst-class:: classref-property-setget
  209. - void **set_fixed_fps** **(** :ref:`int<class_int>` value **)**
  210. - :ref:`int<class_int>` **get_fixed_fps** **(** **)**
  211. The particle system's frame rate is fixed to a value. For example, changing the value to 2 will make the particles render at 2 frames per second. Note this does not slow down the simulation of the particle system itself.
  212. .. rst-class:: classref-item-separator
  213. ----
  214. .. _class_GPUParticles2D_property_fract_delta:
  215. .. rst-class:: classref-property
  216. :ref:`bool<class_bool>` **fract_delta** = ``true``
  217. .. rst-class:: classref-property-setget
  218. - void **set_fractional_delta** **(** :ref:`bool<class_bool>` value **)**
  219. - :ref:`bool<class_bool>` **get_fractional_delta** **(** **)**
  220. If ``true``, results in fractional delta calculation which has a smoother particles display effect.
  221. .. rst-class:: classref-item-separator
  222. ----
  223. .. _class_GPUParticles2D_property_interp_to_end:
  224. .. rst-class:: classref-property
  225. :ref:`float<class_float>` **interp_to_end** = ``0.0``
  226. .. rst-class:: classref-property-setget
  227. - void **set_interp_to_end** **(** :ref:`float<class_float>` value **)**
  228. - :ref:`float<class_float>` **get_interp_to_end** **(** **)**
  229. Causes all the particles in this node to interpolate towards the end of their lifetime.
  230. \ **Note**: This only works when used with a :ref:`ParticleProcessMaterial<class_ParticleProcessMaterial>`. It needs to be manually implemented for custom process shaders.
  231. .. rst-class:: classref-item-separator
  232. ----
  233. .. _class_GPUParticles2D_property_interpolate:
  234. .. rst-class:: classref-property
  235. :ref:`bool<class_bool>` **interpolate** = ``true``
  236. .. rst-class:: classref-property-setget
  237. - void **set_interpolate** **(** :ref:`bool<class_bool>` value **)**
  238. - :ref:`bool<class_bool>` **get_interpolate** **(** **)**
  239. Enables particle interpolation, which makes the particle movement smoother when their :ref:`fixed_fps<class_GPUParticles2D_property_fixed_fps>` is lower than the screen refresh rate.
  240. .. rst-class:: classref-item-separator
  241. ----
  242. .. _class_GPUParticles2D_property_lifetime:
  243. .. rst-class:: classref-property
  244. :ref:`float<class_float>` **lifetime** = ``1.0``
  245. .. rst-class:: classref-property-setget
  246. - void **set_lifetime** **(** :ref:`float<class_float>` value **)**
  247. - :ref:`float<class_float>` **get_lifetime** **(** **)**
  248. Amount of time each particle will exist.
  249. .. rst-class:: classref-item-separator
  250. ----
  251. .. _class_GPUParticles2D_property_local_coords:
  252. .. rst-class:: classref-property
  253. :ref:`bool<class_bool>` **local_coords** = ``false``
  254. .. rst-class:: classref-property-setget
  255. - void **set_use_local_coordinates** **(** :ref:`bool<class_bool>` value **)**
  256. - :ref:`bool<class_bool>` **get_use_local_coordinates** **(** **)**
  257. If ``true``, particles use the parent node's coordinate space (known as local coordinates). This will cause particles to move and rotate along the **GPUParticles2D** node (and its parents) when it is moved or rotated. If ``false``, particles use global coordinates; they will not move or rotate along the **GPUParticles2D** node (and its parents) when it is moved or rotated.
  258. .. rst-class:: classref-item-separator
  259. ----
  260. .. _class_GPUParticles2D_property_one_shot:
  261. .. rst-class:: classref-property
  262. :ref:`bool<class_bool>` **one_shot** = ``false``
  263. .. rst-class:: classref-property-setget
  264. - void **set_one_shot** **(** :ref:`bool<class_bool>` value **)**
  265. - :ref:`bool<class_bool>` **get_one_shot** **(** **)**
  266. If ``true``, only one emission cycle occurs. If set ``true`` during a cycle, emission will stop at the cycle's end.
  267. .. rst-class:: classref-item-separator
  268. ----
  269. .. _class_GPUParticles2D_property_preprocess:
  270. .. rst-class:: classref-property
  271. :ref:`float<class_float>` **preprocess** = ``0.0``
  272. .. rst-class:: classref-property-setget
  273. - void **set_pre_process_time** **(** :ref:`float<class_float>` value **)**
  274. - :ref:`float<class_float>` **get_pre_process_time** **(** **)**
  275. Particle system starts as if it had already run for this many seconds.
  276. .. rst-class:: classref-item-separator
  277. ----
  278. .. _class_GPUParticles2D_property_process_material:
  279. .. rst-class:: classref-property
  280. :ref:`Material<class_Material>` **process_material**
  281. .. rst-class:: classref-property-setget
  282. - void **set_process_material** **(** :ref:`Material<class_Material>` value **)**
  283. - :ref:`Material<class_Material>` **get_process_material** **(** **)**
  284. :ref:`Material<class_Material>` for processing particles. Can be a :ref:`ParticleProcessMaterial<class_ParticleProcessMaterial>` or a :ref:`ShaderMaterial<class_ShaderMaterial>`.
  285. .. rst-class:: classref-item-separator
  286. ----
  287. .. _class_GPUParticles2D_property_randomness:
  288. .. rst-class:: classref-property
  289. :ref:`float<class_float>` **randomness** = ``0.0``
  290. .. rst-class:: classref-property-setget
  291. - void **set_randomness_ratio** **(** :ref:`float<class_float>` value **)**
  292. - :ref:`float<class_float>` **get_randomness_ratio** **(** **)**
  293. Emission lifetime randomness ratio.
  294. .. rst-class:: classref-item-separator
  295. ----
  296. .. _class_GPUParticles2D_property_speed_scale:
  297. .. rst-class:: classref-property
  298. :ref:`float<class_float>` **speed_scale** = ``1.0``
  299. .. rst-class:: classref-property-setget
  300. - void **set_speed_scale** **(** :ref:`float<class_float>` value **)**
  301. - :ref:`float<class_float>` **get_speed_scale** **(** **)**
  302. Particle system's running speed scaling ratio. A value of ``0`` can be used to pause the particles.
  303. .. rst-class:: classref-item-separator
  304. ----
  305. .. _class_GPUParticles2D_property_sub_emitter:
  306. .. rst-class:: classref-property
  307. :ref:`NodePath<class_NodePath>` **sub_emitter** = ``NodePath("")``
  308. .. rst-class:: classref-property-setget
  309. - void **set_sub_emitter** **(** :ref:`NodePath<class_NodePath>` value **)**
  310. - :ref:`NodePath<class_NodePath>` **get_sub_emitter** **(** **)**
  311. The :ref:`NodePath<class_NodePath>` to the **GPUParticles2D** used for sub-emissions.
  312. .. rst-class:: classref-item-separator
  313. ----
  314. .. _class_GPUParticles2D_property_texture:
  315. .. rst-class:: classref-property
  316. :ref:`Texture2D<class_Texture2D>` **texture**
  317. .. rst-class:: classref-property-setget
  318. - void **set_texture** **(** :ref:`Texture2D<class_Texture2D>` value **)**
  319. - :ref:`Texture2D<class_Texture2D>` **get_texture** **(** **)**
  320. Particle texture. If ``null``, particles will be squares.
  321. .. rst-class:: classref-item-separator
  322. ----
  323. .. _class_GPUParticles2D_property_trail_enabled:
  324. .. rst-class:: classref-property
  325. :ref:`bool<class_bool>` **trail_enabled** = ``false``
  326. .. rst-class:: classref-property-setget
  327. - void **set_trail_enabled** **(** :ref:`bool<class_bool>` value **)**
  328. - :ref:`bool<class_bool>` **is_trail_enabled** **(** **)**
  329. If ``true``, enables particle trails using a mesh skinning system.
  330. \ **Note:** Unlike :ref:`GPUParticles3D<class_GPUParticles3D>`, the number of trail sections and subdivisions is set with the :ref:`trail_sections<class_GPUParticles2D_property_trail_sections>` and :ref:`trail_section_subdivisions<class_GPUParticles2D_property_trail_section_subdivisions>` properties.
  331. .. rst-class:: classref-item-separator
  332. ----
  333. .. _class_GPUParticles2D_property_trail_lifetime:
  334. .. rst-class:: classref-property
  335. :ref:`float<class_float>` **trail_lifetime** = ``0.3``
  336. .. rst-class:: classref-property-setget
  337. - void **set_trail_lifetime** **(** :ref:`float<class_float>` value **)**
  338. - :ref:`float<class_float>` **get_trail_lifetime** **(** **)**
  339. The amount of time the particle's trail should represent (in seconds). Only effective if :ref:`trail_enabled<class_GPUParticles2D_property_trail_enabled>` is ``true``.
  340. .. rst-class:: classref-item-separator
  341. ----
  342. .. _class_GPUParticles2D_property_trail_section_subdivisions:
  343. .. rst-class:: classref-property
  344. :ref:`int<class_int>` **trail_section_subdivisions** = ``4``
  345. .. rst-class:: classref-property-setget
  346. - void **set_trail_section_subdivisions** **(** :ref:`int<class_int>` value **)**
  347. - :ref:`int<class_int>` **get_trail_section_subdivisions** **(** **)**
  348. The number of subdivisions to use for the particle trail rendering. Higher values can result in smoother trail curves, at the cost of performance due to increased mesh complexity. See also :ref:`trail_sections<class_GPUParticles2D_property_trail_sections>`. Only effective if :ref:`trail_enabled<class_GPUParticles2D_property_trail_enabled>` is ``true``.
  349. .. rst-class:: classref-item-separator
  350. ----
  351. .. _class_GPUParticles2D_property_trail_sections:
  352. .. rst-class:: classref-property
  353. :ref:`int<class_int>` **trail_sections** = ``8``
  354. .. rst-class:: classref-property-setget
  355. - void **set_trail_sections** **(** :ref:`int<class_int>` value **)**
  356. - :ref:`int<class_int>` **get_trail_sections** **(** **)**
  357. The number of sections to use for the particle trail rendering. Higher values can result in smoother trail curves, at the cost of performance due to increased mesh complexity. See also :ref:`trail_section_subdivisions<class_GPUParticles2D_property_trail_section_subdivisions>`. Only effective if :ref:`trail_enabled<class_GPUParticles2D_property_trail_enabled>` is ``true``.
  358. .. rst-class:: classref-item-separator
  359. ----
  360. .. _class_GPUParticles2D_property_visibility_rect:
  361. .. rst-class:: classref-property
  362. :ref:`Rect2<class_Rect2>` **visibility_rect** = ``Rect2(-100, -100, 200, 200)``
  363. .. rst-class:: classref-property-setget
  364. - void **set_visibility_rect** **(** :ref:`Rect2<class_Rect2>` value **)**
  365. - :ref:`Rect2<class_Rect2>` **get_visibility_rect** **(** **)**
  366. The :ref:`Rect2<class_Rect2>` that determines the node's region which needs to be visible on screen for the particle system to be active.
  367. Grow the rect if particles suddenly appear/disappear when the node enters/exits the screen. The :ref:`Rect2<class_Rect2>` can be grown via code or with the **Particles → Generate Visibility Rect** editor tool.
  368. .. rst-class:: classref-section-separator
  369. ----
  370. .. rst-class:: classref-descriptions-group
  371. Method Descriptions
  372. -------------------
  373. .. _class_GPUParticles2D_method_capture_rect:
  374. .. rst-class:: classref-method
  375. :ref:`Rect2<class_Rect2>` **capture_rect** **(** **)** |const|
  376. Returns a rectangle containing the positions of all existing particles.
  377. \ **Note:** When using threaded rendering this method synchronizes the rendering thread. Calling it often may have a negative impact on performance.
  378. .. rst-class:: classref-item-separator
  379. ----
  380. .. _class_GPUParticles2D_method_convert_from_particles:
  381. .. rst-class:: classref-method
  382. void **convert_from_particles** **(** :ref:`Node<class_Node>` particles **)**
  383. Sets this node's properties to match a given :ref:`CPUParticles2D<class_CPUParticles2D>` node.
  384. .. rst-class:: classref-item-separator
  385. ----
  386. .. _class_GPUParticles2D_method_emit_particle:
  387. .. rst-class:: classref-method
  388. void **emit_particle** **(** :ref:`Transform2D<class_Transform2D>` xform, :ref:`Vector2<class_Vector2>` velocity, :ref:`Color<class_Color>` color, :ref:`Color<class_Color>` custom, :ref:`int<class_int>` flags **)**
  389. Emits a single particle. Whether ``xform``, ``velocity``, ``color`` and ``custom`` are applied depends on the value of ``flags``. See :ref:`EmitFlags<enum_GPUParticles2D_EmitFlags>`.
  390. .. rst-class:: classref-item-separator
  391. ----
  392. .. _class_GPUParticles2D_method_restart:
  393. .. rst-class:: classref-method
  394. void **restart** **(** **)**
  395. Restarts all the existing particles.
  396. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
  397. .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
  398. .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
  399. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
  400. .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
  401. .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`
  402. .. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)`