class_gpuparticles2d.rst 38 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725
  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/2724>`__
  22. - `2D Dodge The Creeps Demo (uses GPUParticles2D for the trail behind the player) <https://godotengine.org/asset-library/asset/2712>`__
  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>`\ (\ particles\: :ref:`Node<class_Node>`\ ) |
  86. +---------------------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
  87. | |void| | :ref:`emit_particle<class_GPUParticles2D_method_emit_particle>`\ (\ xform\: :ref:`Transform2D<class_Transform2D>`, velocity\: :ref:`Vector2<class_Vector2>`, color\: :ref:`Color<class_Color>`, custom\: :ref:`Color<class_Color>`, flags\: :ref:`int<class_int>`\ ) |
  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**\ (\ ) :ref:`🔗<class_GPUParticles2D_signal_finished>`
  99. Emitted when all active particles have finished processing. To immediately restart the emission cycle, call :ref:`restart<class_GPUParticles2D_method_restart>`.
  100. This signal is never emitted when :ref:`one_shot<class_GPUParticles2D_property_one_shot>` is disabled, as particles will be emitted and processed continuously.
  101. \ **Note:** For :ref:`one_shot<class_GPUParticles2D_property_one_shot>` emitters, due to the particles being computed on the GPU, there may be a short period after receiving the signal during which setting :ref:`emitting<class_GPUParticles2D_property_emitting>` to ``true`` will not restart the emission cycle. This delay is avoided by instead calling :ref:`restart<class_GPUParticles2D_method_restart>`.
  102. .. rst-class:: classref-section-separator
  103. ----
  104. .. rst-class:: classref-descriptions-group
  105. Enumerations
  106. ------------
  107. .. _enum_GPUParticles2D_DrawOrder:
  108. .. rst-class:: classref-enumeration
  109. enum **DrawOrder**: :ref:`🔗<enum_GPUParticles2D_DrawOrder>`
  110. .. _class_GPUParticles2D_constant_DRAW_ORDER_INDEX:
  111. .. rst-class:: classref-enumeration-constant
  112. :ref:`DrawOrder<enum_GPUParticles2D_DrawOrder>` **DRAW_ORDER_INDEX** = ``0``
  113. Particles are drawn in the order emitted.
  114. .. _class_GPUParticles2D_constant_DRAW_ORDER_LIFETIME:
  115. .. rst-class:: classref-enumeration-constant
  116. :ref:`DrawOrder<enum_GPUParticles2D_DrawOrder>` **DRAW_ORDER_LIFETIME** = ``1``
  117. Particles are drawn in order of remaining lifetime. In other words, the particle with the highest lifetime is drawn at the front.
  118. .. _class_GPUParticles2D_constant_DRAW_ORDER_REVERSE_LIFETIME:
  119. .. rst-class:: classref-enumeration-constant
  120. :ref:`DrawOrder<enum_GPUParticles2D_DrawOrder>` **DRAW_ORDER_REVERSE_LIFETIME** = ``2``
  121. Particles are drawn in reverse order of remaining lifetime. In other words, the particle with the lowest lifetime is drawn at the front.
  122. .. rst-class:: classref-item-separator
  123. ----
  124. .. _enum_GPUParticles2D_EmitFlags:
  125. .. rst-class:: classref-enumeration
  126. enum **EmitFlags**: :ref:`🔗<enum_GPUParticles2D_EmitFlags>`
  127. .. _class_GPUParticles2D_constant_EMIT_FLAG_POSITION:
  128. .. rst-class:: classref-enumeration-constant
  129. :ref:`EmitFlags<enum_GPUParticles2D_EmitFlags>` **EMIT_FLAG_POSITION** = ``1``
  130. Particle starts at the specified position.
  131. .. _class_GPUParticles2D_constant_EMIT_FLAG_ROTATION_SCALE:
  132. .. rst-class:: classref-enumeration-constant
  133. :ref:`EmitFlags<enum_GPUParticles2D_EmitFlags>` **EMIT_FLAG_ROTATION_SCALE** = ``2``
  134. Particle starts with specified rotation and scale.
  135. .. _class_GPUParticles2D_constant_EMIT_FLAG_VELOCITY:
  136. .. rst-class:: classref-enumeration-constant
  137. :ref:`EmitFlags<enum_GPUParticles2D_EmitFlags>` **EMIT_FLAG_VELOCITY** = ``4``
  138. Particle starts with the specified velocity vector, which defines the emission direction and speed.
  139. .. _class_GPUParticles2D_constant_EMIT_FLAG_COLOR:
  140. .. rst-class:: classref-enumeration-constant
  141. :ref:`EmitFlags<enum_GPUParticles2D_EmitFlags>` **EMIT_FLAG_COLOR** = ``8``
  142. Particle starts with specified color.
  143. .. _class_GPUParticles2D_constant_EMIT_FLAG_CUSTOM:
  144. .. rst-class:: classref-enumeration-constant
  145. :ref:`EmitFlags<enum_GPUParticles2D_EmitFlags>` **EMIT_FLAG_CUSTOM** = ``16``
  146. Particle starts with specified ``CUSTOM`` data.
  147. .. rst-class:: classref-section-separator
  148. ----
  149. .. rst-class:: classref-descriptions-group
  150. Property Descriptions
  151. ---------------------
  152. .. _class_GPUParticles2D_property_amount:
  153. .. rst-class:: classref-property
  154. :ref:`int<class_int>` **amount** = ``8`` :ref:`🔗<class_GPUParticles2D_property_amount>`
  155. .. rst-class:: classref-property-setget
  156. - |void| **set_amount**\ (\ value\: :ref:`int<class_int>`\ )
  157. - :ref:`int<class_int>` **get_amount**\ (\ )
  158. The number of particles to emit in one emission cycle. The effective emission rate is ``(amount * amount_ratio) / lifetime`` particles per second. Higher values will increase GPU requirements, even if not all particles are visible at a given time or if :ref:`amount_ratio<class_GPUParticles2D_property_amount_ratio>` is decreased.
  159. \ **Note:** Changing this value will cause the particle system to restart. To avoid this, change :ref:`amount_ratio<class_GPUParticles2D_property_amount_ratio>` instead.
  160. .. rst-class:: classref-item-separator
  161. ----
  162. .. _class_GPUParticles2D_property_amount_ratio:
  163. .. rst-class:: classref-property
  164. :ref:`float<class_float>` **amount_ratio** = ``1.0`` :ref:`🔗<class_GPUParticles2D_property_amount_ratio>`
  165. .. rst-class:: classref-property-setget
  166. - |void| **set_amount_ratio**\ (\ value\: :ref:`float<class_float>`\ )
  167. - :ref:`float<class_float>` **get_amount_ratio**\ (\ )
  168. 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.
  169. \ **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>`. If you don't intend to change the number of particles emitted while the particles are emitting, make sure :ref:`amount_ratio<class_GPUParticles2D_property_amount_ratio>` is set to ``1`` and change :ref:`amount<class_GPUParticles2D_property_amount>` to your liking instead.
  170. .. rst-class:: classref-item-separator
  171. ----
  172. .. _class_GPUParticles2D_property_collision_base_size:
  173. .. rst-class:: classref-property
  174. :ref:`float<class_float>` **collision_base_size** = ``1.0`` :ref:`🔗<class_GPUParticles2D_property_collision_base_size>`
  175. .. rst-class:: classref-property-setget
  176. - |void| **set_collision_base_size**\ (\ value\: :ref:`float<class_float>`\ )
  177. - :ref:`float<class_float>` **get_collision_base_size**\ (\ )
  178. Multiplier for particle's collision radius. ``1.0`` corresponds to the size of the sprite. If particles appear to sink into the ground when colliding, increase this value. If particles appear to float when colliding, decrease this value. Only effective if :ref:`ParticleProcessMaterial.collision_mode<class_ParticleProcessMaterial_property_collision_mode>` is :ref:`ParticleProcessMaterial.COLLISION_RIGID<class_ParticleProcessMaterial_constant_COLLISION_RIGID>` or :ref:`ParticleProcessMaterial.COLLISION_HIDE_ON_CONTACT<class_ParticleProcessMaterial_constant_COLLISION_HIDE_ON_CONTACT>`.
  179. \ **Note:** Particles always have a spherical collision shape.
  180. .. rst-class:: classref-item-separator
  181. ----
  182. .. _class_GPUParticles2D_property_draw_order:
  183. .. rst-class:: classref-property
  184. :ref:`DrawOrder<enum_GPUParticles2D_DrawOrder>` **draw_order** = ``1`` :ref:`🔗<class_GPUParticles2D_property_draw_order>`
  185. .. rst-class:: classref-property-setget
  186. - |void| **set_draw_order**\ (\ value\: :ref:`DrawOrder<enum_GPUParticles2D_DrawOrder>`\ )
  187. - :ref:`DrawOrder<enum_GPUParticles2D_DrawOrder>` **get_draw_order**\ (\ )
  188. Particle draw order. Uses :ref:`DrawOrder<enum_GPUParticles2D_DrawOrder>` values.
  189. .. rst-class:: classref-item-separator
  190. ----
  191. .. _class_GPUParticles2D_property_emitting:
  192. .. rst-class:: classref-property
  193. :ref:`bool<class_bool>` **emitting** = ``true`` :ref:`🔗<class_GPUParticles2D_property_emitting>`
  194. .. rst-class:: classref-property-setget
  195. - |void| **set_emitting**\ (\ value\: :ref:`bool<class_bool>`\ )
  196. - :ref:`bool<class_bool>` **is_emitting**\ (\ )
  197. 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 unless all active particles have finished processing. Use the :ref:`finished<class_GPUParticles2D_signal_finished>` signal to be notified once all active particles finish processing.
  198. \ **Note:** For :ref:`one_shot<class_GPUParticles2D_property_one_shot>` emitters, due to the particles being computed on the GPU, there may be a short period after receiving the :ref:`finished<class_GPUParticles2D_signal_finished>` signal during which setting this to ``true`` will not restart the emission cycle.
  199. \ **Tip:** If your :ref:`one_shot<class_GPUParticles2D_property_one_shot>` emitter needs to immediately restart emitting particles once :ref:`finished<class_GPUParticles2D_signal_finished>` signal is received, consider calling :ref:`restart<class_GPUParticles2D_method_restart>` instead of setting :ref:`emitting<class_GPUParticles2D_property_emitting>`.
  200. .. rst-class:: classref-item-separator
  201. ----
  202. .. _class_GPUParticles2D_property_explosiveness:
  203. .. rst-class:: classref-property
  204. :ref:`float<class_float>` **explosiveness** = ``0.0`` :ref:`🔗<class_GPUParticles2D_property_explosiveness>`
  205. .. rst-class:: classref-property-setget
  206. - |void| **set_explosiveness_ratio**\ (\ value\: :ref:`float<class_float>`\ )
  207. - :ref:`float<class_float>` **get_explosiveness_ratio**\ (\ )
  208. 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.
  209. .. rst-class:: classref-item-separator
  210. ----
  211. .. _class_GPUParticles2D_property_fixed_fps:
  212. .. rst-class:: classref-property
  213. :ref:`int<class_int>` **fixed_fps** = ``30`` :ref:`🔗<class_GPUParticles2D_property_fixed_fps>`
  214. .. rst-class:: classref-property-setget
  215. - |void| **set_fixed_fps**\ (\ value\: :ref:`int<class_int>`\ )
  216. - :ref:`int<class_int>` **get_fixed_fps**\ (\ )
  217. 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.
  218. .. rst-class:: classref-item-separator
  219. ----
  220. .. _class_GPUParticles2D_property_fract_delta:
  221. .. rst-class:: classref-property
  222. :ref:`bool<class_bool>` **fract_delta** = ``true`` :ref:`🔗<class_GPUParticles2D_property_fract_delta>`
  223. .. rst-class:: classref-property-setget
  224. - |void| **set_fractional_delta**\ (\ value\: :ref:`bool<class_bool>`\ )
  225. - :ref:`bool<class_bool>` **get_fractional_delta**\ (\ )
  226. If ``true``, results in fractional delta calculation which has a smoother particles display effect.
  227. .. rst-class:: classref-item-separator
  228. ----
  229. .. _class_GPUParticles2D_property_interp_to_end:
  230. .. rst-class:: classref-property
  231. :ref:`float<class_float>` **interp_to_end** = ``0.0`` :ref:`🔗<class_GPUParticles2D_property_interp_to_end>`
  232. .. rst-class:: classref-property-setget
  233. - |void| **set_interp_to_end**\ (\ value\: :ref:`float<class_float>`\ )
  234. - :ref:`float<class_float>` **get_interp_to_end**\ (\ )
  235. Causes all the particles in this node to interpolate towards the end of their lifetime.
  236. \ **Note:** This only works when used with a :ref:`ParticleProcessMaterial<class_ParticleProcessMaterial>`. It needs to be manually implemented for custom process shaders.
  237. .. rst-class:: classref-item-separator
  238. ----
  239. .. _class_GPUParticles2D_property_interpolate:
  240. .. rst-class:: classref-property
  241. :ref:`bool<class_bool>` **interpolate** = ``true`` :ref:`🔗<class_GPUParticles2D_property_interpolate>`
  242. .. rst-class:: classref-property-setget
  243. - |void| **set_interpolate**\ (\ value\: :ref:`bool<class_bool>`\ )
  244. - :ref:`bool<class_bool>` **get_interpolate**\ (\ )
  245. 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.
  246. .. rst-class:: classref-item-separator
  247. ----
  248. .. _class_GPUParticles2D_property_lifetime:
  249. .. rst-class:: classref-property
  250. :ref:`float<class_float>` **lifetime** = ``1.0`` :ref:`🔗<class_GPUParticles2D_property_lifetime>`
  251. .. rst-class:: classref-property-setget
  252. - |void| **set_lifetime**\ (\ value\: :ref:`float<class_float>`\ )
  253. - :ref:`float<class_float>` **get_lifetime**\ (\ )
  254. The amount of time each particle will exist (in seconds). The effective emission rate is ``(amount * amount_ratio) / lifetime`` particles per second.
  255. .. rst-class:: classref-item-separator
  256. ----
  257. .. _class_GPUParticles2D_property_local_coords:
  258. .. rst-class:: classref-property
  259. :ref:`bool<class_bool>` **local_coords** = ``false`` :ref:`🔗<class_GPUParticles2D_property_local_coords>`
  260. .. rst-class:: classref-property-setget
  261. - |void| **set_use_local_coordinates**\ (\ value\: :ref:`bool<class_bool>`\ )
  262. - :ref:`bool<class_bool>` **get_use_local_coordinates**\ (\ )
  263. 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.
  264. .. rst-class:: classref-item-separator
  265. ----
  266. .. _class_GPUParticles2D_property_one_shot:
  267. .. rst-class:: classref-property
  268. :ref:`bool<class_bool>` **one_shot** = ``false`` :ref:`🔗<class_GPUParticles2D_property_one_shot>`
  269. .. rst-class:: classref-property-setget
  270. - |void| **set_one_shot**\ (\ value\: :ref:`bool<class_bool>`\ )
  271. - :ref:`bool<class_bool>` **get_one_shot**\ (\ )
  272. If ``true``, only one emission cycle occurs. If set ``true`` during a cycle, emission will stop at the cycle's end.
  273. .. rst-class:: classref-item-separator
  274. ----
  275. .. _class_GPUParticles2D_property_preprocess:
  276. .. rst-class:: classref-property
  277. :ref:`float<class_float>` **preprocess** = ``0.0`` :ref:`🔗<class_GPUParticles2D_property_preprocess>`
  278. .. rst-class:: classref-property-setget
  279. - |void| **set_pre_process_time**\ (\ value\: :ref:`float<class_float>`\ )
  280. - :ref:`float<class_float>` **get_pre_process_time**\ (\ )
  281. Particle system starts as if it had already run for this many seconds.
  282. .. rst-class:: classref-item-separator
  283. ----
  284. .. _class_GPUParticles2D_property_process_material:
  285. .. rst-class:: classref-property
  286. :ref:`Material<class_Material>` **process_material** :ref:`🔗<class_GPUParticles2D_property_process_material>`
  287. .. rst-class:: classref-property-setget
  288. - |void| **set_process_material**\ (\ value\: :ref:`Material<class_Material>`\ )
  289. - :ref:`Material<class_Material>` **get_process_material**\ (\ )
  290. :ref:`Material<class_Material>` for processing particles. Can be a :ref:`ParticleProcessMaterial<class_ParticleProcessMaterial>` or a :ref:`ShaderMaterial<class_ShaderMaterial>`.
  291. .. rst-class:: classref-item-separator
  292. ----
  293. .. _class_GPUParticles2D_property_randomness:
  294. .. rst-class:: classref-property
  295. :ref:`float<class_float>` **randomness** = ``0.0`` :ref:`🔗<class_GPUParticles2D_property_randomness>`
  296. .. rst-class:: classref-property-setget
  297. - |void| **set_randomness_ratio**\ (\ value\: :ref:`float<class_float>`\ )
  298. - :ref:`float<class_float>` **get_randomness_ratio**\ (\ )
  299. Emission lifetime randomness ratio.
  300. .. rst-class:: classref-item-separator
  301. ----
  302. .. _class_GPUParticles2D_property_speed_scale:
  303. .. rst-class:: classref-property
  304. :ref:`float<class_float>` **speed_scale** = ``1.0`` :ref:`🔗<class_GPUParticles2D_property_speed_scale>`
  305. .. rst-class:: classref-property-setget
  306. - |void| **set_speed_scale**\ (\ value\: :ref:`float<class_float>`\ )
  307. - :ref:`float<class_float>` **get_speed_scale**\ (\ )
  308. Particle system's running speed scaling ratio. A value of ``0`` can be used to pause the particles.
  309. .. rst-class:: classref-item-separator
  310. ----
  311. .. _class_GPUParticles2D_property_sub_emitter:
  312. .. rst-class:: classref-property
  313. :ref:`NodePath<class_NodePath>` **sub_emitter** = ``NodePath("")`` :ref:`🔗<class_GPUParticles2D_property_sub_emitter>`
  314. .. rst-class:: classref-property-setget
  315. - |void| **set_sub_emitter**\ (\ value\: :ref:`NodePath<class_NodePath>`\ )
  316. - :ref:`NodePath<class_NodePath>` **get_sub_emitter**\ (\ )
  317. Path to another **GPUParticles2D** node that will be used as a subemitter (see :ref:`ParticleProcessMaterial.sub_emitter_mode<class_ParticleProcessMaterial_property_sub_emitter_mode>`). Subemitters can be used to achieve effects such as fireworks, sparks on collision, bubbles popping into water drops, and more.
  318. \ **Note:** When :ref:`sub_emitter<class_GPUParticles2D_property_sub_emitter>` is set, the target **GPUParticles2D** node will no longer emit particles on its own.
  319. .. rst-class:: classref-item-separator
  320. ----
  321. .. _class_GPUParticles2D_property_texture:
  322. .. rst-class:: classref-property
  323. :ref:`Texture2D<class_Texture2D>` **texture** :ref:`🔗<class_GPUParticles2D_property_texture>`
  324. .. rst-class:: classref-property-setget
  325. - |void| **set_texture**\ (\ value\: :ref:`Texture2D<class_Texture2D>`\ )
  326. - :ref:`Texture2D<class_Texture2D>` **get_texture**\ (\ )
  327. Particle texture. If ``null``, particles will be squares with a size of 1×1 pixels.
  328. \ **Note:** To use a flipbook texture, assign a new :ref:`CanvasItemMaterial<class_CanvasItemMaterial>` to the **GPUParticles2D**'s :ref:`CanvasItem.material<class_CanvasItem_property_material>` property, then enable :ref:`CanvasItemMaterial.particles_animation<class_CanvasItemMaterial_property_particles_animation>` and set :ref:`CanvasItemMaterial.particles_anim_h_frames<class_CanvasItemMaterial_property_particles_anim_h_frames>`, :ref:`CanvasItemMaterial.particles_anim_v_frames<class_CanvasItemMaterial_property_particles_anim_v_frames>`, and :ref:`CanvasItemMaterial.particles_anim_loop<class_CanvasItemMaterial_property_particles_anim_loop>` to match the flipbook texture.
  329. .. rst-class:: classref-item-separator
  330. ----
  331. .. _class_GPUParticles2D_property_trail_enabled:
  332. .. rst-class:: classref-property
  333. :ref:`bool<class_bool>` **trail_enabled** = ``false`` :ref:`🔗<class_GPUParticles2D_property_trail_enabled>`
  334. .. rst-class:: classref-property-setget
  335. - |void| **set_trail_enabled**\ (\ value\: :ref:`bool<class_bool>`\ )
  336. - :ref:`bool<class_bool>` **is_trail_enabled**\ (\ )
  337. If ``true``, enables particle trails using a mesh skinning system.
  338. \ **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.
  339. .. rst-class:: classref-item-separator
  340. ----
  341. .. _class_GPUParticles2D_property_trail_lifetime:
  342. .. rst-class:: classref-property
  343. :ref:`float<class_float>` **trail_lifetime** = ``0.3`` :ref:`🔗<class_GPUParticles2D_property_trail_lifetime>`
  344. .. rst-class:: classref-property-setget
  345. - |void| **set_trail_lifetime**\ (\ value\: :ref:`float<class_float>`\ )
  346. - :ref:`float<class_float>` **get_trail_lifetime**\ (\ )
  347. 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``.
  348. .. rst-class:: classref-item-separator
  349. ----
  350. .. _class_GPUParticles2D_property_trail_section_subdivisions:
  351. .. rst-class:: classref-property
  352. :ref:`int<class_int>` **trail_section_subdivisions** = ``4`` :ref:`🔗<class_GPUParticles2D_property_trail_section_subdivisions>`
  353. .. rst-class:: classref-property-setget
  354. - |void| **set_trail_section_subdivisions**\ (\ value\: :ref:`int<class_int>`\ )
  355. - :ref:`int<class_int>` **get_trail_section_subdivisions**\ (\ )
  356. 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``.
  357. .. rst-class:: classref-item-separator
  358. ----
  359. .. _class_GPUParticles2D_property_trail_sections:
  360. .. rst-class:: classref-property
  361. :ref:`int<class_int>` **trail_sections** = ``8`` :ref:`🔗<class_GPUParticles2D_property_trail_sections>`
  362. .. rst-class:: classref-property-setget
  363. - |void| **set_trail_sections**\ (\ value\: :ref:`int<class_int>`\ )
  364. - :ref:`int<class_int>` **get_trail_sections**\ (\ )
  365. 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``.
  366. .. rst-class:: classref-item-separator
  367. ----
  368. .. _class_GPUParticles2D_property_visibility_rect:
  369. .. rst-class:: classref-property
  370. :ref:`Rect2<class_Rect2>` **visibility_rect** = ``Rect2(-100, -100, 200, 200)`` :ref:`🔗<class_GPUParticles2D_property_visibility_rect>`
  371. .. rst-class:: classref-property-setget
  372. - |void| **set_visibility_rect**\ (\ value\: :ref:`Rect2<class_Rect2>`\ )
  373. - :ref:`Rect2<class_Rect2>` **get_visibility_rect**\ (\ )
  374. 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.
  375. 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.
  376. .. rst-class:: classref-section-separator
  377. ----
  378. .. rst-class:: classref-descriptions-group
  379. Method Descriptions
  380. -------------------
  381. .. _class_GPUParticles2D_method_capture_rect:
  382. .. rst-class:: classref-method
  383. :ref:`Rect2<class_Rect2>` **capture_rect**\ (\ ) |const| :ref:`🔗<class_GPUParticles2D_method_capture_rect>`
  384. Returns a rectangle containing the positions of all existing particles.
  385. \ **Note:** When using threaded rendering this method synchronizes the rendering thread. Calling it often may have a negative impact on performance.
  386. .. rst-class:: classref-item-separator
  387. ----
  388. .. _class_GPUParticles2D_method_convert_from_particles:
  389. .. rst-class:: classref-method
  390. |void| **convert_from_particles**\ (\ particles\: :ref:`Node<class_Node>`\ ) :ref:`🔗<class_GPUParticles2D_method_convert_from_particles>`
  391. Sets this node's properties to match a given :ref:`CPUParticles2D<class_CPUParticles2D>` node.
  392. .. rst-class:: classref-item-separator
  393. ----
  394. .. _class_GPUParticles2D_method_emit_particle:
  395. .. rst-class:: classref-method
  396. |void| **emit_particle**\ (\ xform\: :ref:`Transform2D<class_Transform2D>`, velocity\: :ref:`Vector2<class_Vector2>`, color\: :ref:`Color<class_Color>`, custom\: :ref:`Color<class_Color>`, flags\: :ref:`int<class_int>`\ ) :ref:`🔗<class_GPUParticles2D_method_emit_particle>`
  397. Emits a single particle. Whether ``xform``, ``velocity``, ``color`` and ``custom`` are applied depends on the value of ``flags``. See :ref:`EmitFlags<enum_GPUParticles2D_EmitFlags>`.
  398. The default ParticleProcessMaterial will overwrite ``color`` and use the contents of ``custom`` as ``(rotation, age, animation, lifetime)``.
  399. .. rst-class:: classref-item-separator
  400. ----
  401. .. _class_GPUParticles2D_method_restart:
  402. .. rst-class:: classref-method
  403. |void| **restart**\ (\ ) :ref:`🔗<class_GPUParticles2D_method_restart>`
  404. Restarts the particle emission cycle, clearing existing particles. To avoid particles vanishing from the viewport, wait for the :ref:`finished<class_GPUParticles2D_signal_finished>` signal before calling.
  405. \ **Note:** The :ref:`finished<class_GPUParticles2D_signal_finished>` signal is only emitted by :ref:`one_shot<class_GPUParticles2D_property_one_shot>` emitters.
  406. .. |virtual| replace:: :abbr:`virtual (This method should typically be overridden by the user to have any effect.)`
  407. .. |const| replace:: :abbr:`const (This method has no side effects. It doesn't modify any of the instance's member variables.)`
  408. .. |vararg| replace:: :abbr:`vararg (This method accepts any number of arguments after the ones described here.)`
  409. .. |constructor| replace:: :abbr:`constructor (This method is used to construct a type.)`
  410. .. |static| replace:: :abbr:`static (This method doesn't need an instance to be called, so it can be called directly using the class name.)`
  411. .. |operator| replace:: :abbr:`operator (This method describes a valid operator to use with this type as left-hand operand.)`
  412. .. |bitfield| replace:: :abbr:`BitField (This value is an integer composed as a bitmask of the following flags.)`
  413. .. |void| replace:: :abbr:`void (No return value.)`