particle_systems_2d.rst 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287
  1. .. _doc_particle_systems_2d:
  2. Particle systems (2D)
  3. =====================
  4. Intro
  5. -----
  6. A simple (but flexible enough for most uses) particle system is
  7. provided. Particle systems are used to simulate complex physical effects,
  8. such as sparks, fire, magic particles, smoke, mist, etc.
  9. The idea is that a "particle" is emitted at a fixed interval and with a
  10. fixed lifetime. During its lifetime, every particle will have the same
  11. base behavior. What makes each particle different from the rest and provides a more
  12. organic look is the "randomness" associated with each parameter. In
  13. essence, creating a particle system means setting base physics
  14. parameters and then adding randomness to them.
  15. Particles2D
  16. ~~~~~~~~~~~
  17. Particle systems are added to the scene via the
  18. :ref:`Particles2D <class_Particles2D>`
  19. node. However, after creating that node you will notice that only a white dot was created,
  20. and that there is a warning icon next to your Particles2D node in the inspector. This
  21. is because the node needs a ParticlesMaterial to function.
  22. ParticlesMaterial
  23. ~~~~~~~~~~~~~~~~~
  24. To add a process material to your particles node, go to ``Process Material`` in
  25. your inspector panel. Click on the box next to ``Material``, and from the dropdown
  26. menu select ``New ParticlesMaterial``.
  27. .. image:: img/particles_material.png
  28. Your Particles2D node should now be emitting
  29. white points downward.
  30. .. image:: img/particles1.png
  31. Texture
  32. ~~~~~~~
  33. A particle system uses a single texture (in the future this might be
  34. extended to animated textures via spritesheet). The texture is set via
  35. the relevant texture property:
  36. .. image:: img/particles2.png
  37. Time parameters
  38. ---------------
  39. Lifetime
  40. ~~~~~~~~
  41. The time in seconds that every particle will stay alive. When lifetime
  42. ends, a new particle is created to replace it.
  43. Lifetime: 0.5
  44. .. image:: img/paranim14.gif
  45. Lifetime: 4.0
  46. .. image:: img/paranim15.gif
  47. One Shot
  48. ~~~~~~~~
  49. When enabled, a Particles2D node will emit all of its particles once
  50. and then never again.
  51. Preprocess
  52. ~~~~~~~~~~
  53. Particle systems begin with zero particles emitted, then start emitting.
  54. This can be an inconvenience when loading a scene and systems like
  55. a torch, mist, etc. begin emitting the moment you enter. Preprocess is
  56. used to let the system process a given number of seconds before it is
  57. actually drawn the first time.
  58. Speed Scale
  59. ~~~~~~~~~~~
  60. The speed scale has a default value of ``1`` and is used to adjust the
  61. speed of a particle system. Lowering the value will make the particles
  62. slower while increasing the value will make the particles much faster.
  63. Explosiveness
  64. ~~~~~~~~~~~~~
  65. If lifetime is ``1`` and there are 10 particles, it means a particle
  66. will be emitted every 0.1 seconds. The explosiveness parameter changes
  67. this, and forces particles to be emitted all together. Ranges are:
  68. - 0: Emit particles at regular intervals (default value).
  69. - 1: Emit all particles simultaneously.
  70. Values in the middle are also allowed. This feature is useful for
  71. creating explosions or sudden bursts of particles:
  72. .. image:: img/paranim18.gif
  73. Randomness
  74. ~~~~~~~~~~
  75. All physics parameters can be randomized. Random values range from ``0`` to
  76. ``1``. The formula to randomize a parameter is:
  77. ::
  78. initial_value = param_value + param_value * randomness
  79. Fixed FPS
  80. ~~~~~~~~~
  81. This setting can be used to set the particle system to render at a fixed
  82. FPS. For instance, changing the value to ``2`` will make the particles render
  83. at 2 frames per second. Note this does not slow down the particle system itself.
  84. Fract Delta
  85. ~~~~~~~~~~~
  86. This can be used to turn Fract Delta on or off.
  87. Drawing parameters
  88. ------------------
  89. Visibility Rect
  90. ~~~~~~~~~~~~~~~
  91. The visibility rectangle controls the visibility of the particles on screen. If this rectangle is outside of the viewport, the engine will not render the particles on screen.
  92. The rectangle's ``W`` and ``H`` properties respectively control its Width and its Height.
  93. The ``X`` and ``Y`` properties control the position of the upper-left
  94. corner of the rectangle, relative to the particle emitter.
  95. You can have Godot generate a Visibility Rect automatically using the toolbar above the 2d view. To do so, select the Particles2D node and Click ``Particles > Generate Visibility Rect``. Godot will simulate the Particles2D node emitting particles for a few seconds and set the rectangle to fit the surface the particles take.
  96. You can control the emit duration with the ``Generation Time (sec)`` option. The maximum value is 25 seconds. If you need more time for your particles to move around, you can temporarily change the ``preprocess`` duration on the Particles2D node.
  97. Local Coords
  98. ~~~~~~~~~~~~
  99. By default this option is on, and it means that the space that particles
  100. are emitted to is relative to the node. If the node is moved, all
  101. particles are moved with it:
  102. .. image:: img/paranim20.gif
  103. If disabled, particles will emit to global space, meaning that if the
  104. node is moved, already emitted particles are not affected:
  105. .. image:: img/paranim21.gif
  106. Draw Order
  107. ~~~~~~~~~~
  108. This controls the order in which individual particles are drawn. ``Index``
  109. means particles are drawn according to their emission order (default).
  110. ``Lifetime`` means they are drawn in order of remaining lifetime.
  111. ParticlesMaterial settings
  112. --------------------------
  113. Particles2D > Process Material > Material > drop-down menu > Edit:
  114. .. Commented out as not implemented in 3.x for now.
  115. ..
  116. Direction
  117. ~~~~~~~~~
  118. ..
  119. This is the base angle at which particles emit. Default is ``0`` (down):
  120. ..
  121. .. image:: img/paranim1.gif
  122. ..
  123. Changing it will change the emissor direction, but gravity will still affect them:
  124. ..
  125. .. image:: img/paranim2.gif
  126. ..
  127. This parameter is useful because, by rotating the node, gravity will
  128. also be rotated. Changing direction allows them to be separated.
  129. Spread
  130. ~~~~~~
  131. This parameter is the angle in degrees which will be randomly added in
  132. either direction to the base ``Direction``. A spread of ``180`` will emit
  133. in all directions (+/- 180).
  134. .. image:: img/paranim3.gif
  135. Gravity
  136. ~~~~~~~
  137. The gravity applied to every particle.
  138. .. image:: img/paranim7.gif
  139. Initial Velocity
  140. ~~~~~~~~~~~~~~~~
  141. Linear velocity is the speed at which particles will be emitted (in
  142. pixels/sec). Speed might later be modified by gravity or other
  143. accelerations (as described further below).
  144. .. image:: img/paranim4.gif
  145. Angular Velocity
  146. ~~~~~~~~~~~~~~~~
  147. Angular velocity is the initial angular velocity applied to particles.
  148. Spin Velocity
  149. ~~~~~~~~~~~~~
  150. Spin velocity is the speed at which particles turn around their center
  151. (in degrees/sec).
  152. .. image:: img/paranim5.gif
  153. Orbit Velocity
  154. ~~~~~~~~~~~~~~
  155. Orbit velocity is used to make particles turn around their center.
  156. .. image:: img/paranim6.gif
  157. Linear Acceleration
  158. ~~~~~~~~~~~~~~~~~~~
  159. The linear acceleration applied to each particle.
  160. Radial Acceleration
  161. ~~~~~~~~~~~~~~~~~~~
  162. If this acceleration is positive, particles are accelerated away from
  163. the center. If negative, they are absorbed towards it.
  164. .. image:: img/paranim8.gif
  165. Tangential Acceleration
  166. ~~~~~~~~~~~~~~~~~~~~~~~
  167. This acceleration will use the tangent vector to the center. Combining
  168. with radial acceleration can do nice effects.
  169. .. image:: img/paranim9.gif
  170. Damping
  171. ~~~~~~~
  172. Damping applies friction to the particles, forcing them to stop. It is
  173. especially useful for sparks or explosions, which usually begin with a
  174. high linear velocity and then stop as they fade.
  175. .. image:: img/paranim10.gif
  176. Angle
  177. ~~~~~
  178. Determines the initial angle of the particle (in degress). This parameter
  179. is mostly useful randomized.
  180. .. image:: img/paranim11.gif
  181. Scale
  182. ~~~~~
  183. Determines the initial scale of the particles.
  184. .. image:: img/paranim12.gif
  185. Color
  186. ~~~~~
  187. Used to change the color of the particles being emitted.
  188. Hue variation
  189. ~~~~~~~~~~~~~
  190. The ``Variation`` value sets the initial hue variation applied to each
  191. particle. The ``Variation Random`` value controls the hue variation
  192. randomness ratio.