1.
            
              Preparation
               This is the effect we are going to make in this tutorial.
Note: The main content of this tutorial comes from the Content Examples that come with Unreal Engine
Tip: Use ⬆️ ⬇️ to turn the page up and down. We recommend browsing with a large screen for a better reading experience.    
            3.
            
              Goal
               In this example, Sprites face the vector between the center of the system and the particle itself.
That vector is then itself rotated  based on the age of the emitter to create spinning sprites.   
            4.
            
              Let's start the reconstruction
               Right click and select FX => Niagara System to create.   
            5.
            
              Create Niagara System
               Select Empty template, click + and Finish   
            6.
            
              Create Niagara System
               As a result, we get a Niagara System asset, click to open it.   
            7.
            
              Empty Niagara System
               You can see that we have an empty Niagara system.   
            8.
            
              Spawn Rate
               Click on the + sign to the right of the Emitter Update to add the Spawn Rate module.
Spawn Rate: Number of particles per second to spawn.   
            9.
            
              Spawn Rate
               Set the Spawn Rate value to 40.0.
Spawn 40.0 particle per second.   
            10.
            
              SineWave
               Click the + sign to the right of the Emitter Attributes to add a float attribute.   
            11.
            
              SineWave
               Name this new property SineWave.   
            12.
            
              SineWave
               Drag this property under Emitter Update.
If dragged into Emitter Spawn, its value would only be set once, on the first frame the emitter was born.
By setting it in Emitter update, that Attribute gets a new value every frame.   
            13.
            
              SineWave
               Because this is calculated at the emitter level and not per-particle, every particle which references it receives the same value, in this case allowing them all to spin at the same time.
The same concept works at the system level too: a variable set there is accesible to every emitter in the system, as well as every particle in those systems.   
            14.
            
              SineWave
               Set the value type of SineWave to Clamp Float
Clamp Float: Clamp Float between min and max value.   
            15.
            
              SineWave
               Set the value of Float to Sine input.   
            16.
            
              SineWave
               Set the value type of Normalized Angle to Multiply Float   
            17.
            
              SineWave
               Sets the A value of Normalized Angle to the Age of the emitter.   
            18.
            
              SineWave
               Set the B value of Normalized Angle to 0.25.   
            19.
            
              Initialize Particles
               Select Initialize Particles and set:
1. Lifetime to 6.0
2. Color Mode to Random Range
3. Color Channel Mode to Random Individual Channels
4. Sprite Size Mode is Random Uniform with a Min value of 6.0 and a Max value of 11.0.   
            20.
            
              Sphere Location
               Add the Sphere Location module in the Particles Spawn section.   
            21.
            
              Sphere Radius
               Set Sphere Radius to 95.0   
            22.
            
              FacingCenter
               Add a Vector variable to the Stage Transients module
Note:
Particle Attributes: Persistent attribute which is written in a particle stage and can be read in particle stages.
Stage Transients: A transient value which can be written to and read from any module. Transient values do not persist from frame to frame, or between stages, e.g. emitter to particle, or spawn to update.   
            23.
            
              FacingCenter
               Name this newly created variable: FacingCenter   
            24.
            
              FacingCenter
               Drag and drop FacingCenter to Particles Update.   
            25.
            
              FacingCenter
               Set the value type of FacingCenter to Subtract Vector   
            26.
            
              FacingCenter
               Edit the value of A to Particles.Position   
            27.
            
              FacingCenter
               Edit the value of A to Simulation Position 
Simulation Position: returns either the Engine.Owner.Position or the local (0, 0, 0) depending on the Local Space flag on the emitter.   
            28.
            
              SpriteFacing
               Add a Vector variable to the Particle Attributes module   
            29.
            
              SpriteFacing
               Name this newly created variable: SpriteFacing   
            30.
            
              SpriteFacing
               Drag and drop SpriteFacing to Particles Update.   
            31.
            
              SpriteFacing
               Set the value type of SpriteFacing to Rotate Vector   
            32.
            
              SpriteFacing
               Set Vector To Rotate to FacingCenter.   
            33.
            
              SpriteFacing
               1. set Yaw, Pitch, Roll to 60.0
2. set the Delta Time value to the Age of the emitter   
            34.
            
              SpriteFacing
               Drag SpriteFacing again to Particles Update.   
            35.
            
              SpriteFacing
               Set the value type of SpriteFacing to Lerp Vector   
            36.
            
              SpriteFacing
               Set the value of A to FaceCenter.   
            37.
            
              SpriteFacing
               Set the value of B to the SpriteFacing obtained in the previous stage.   
            38.
            
              SpriteFacing
               Set the value of Alpha to SineWave.
Particles.SpriteFacing is the vector variable  which controls which direction a particle faces. In this script we blend between facing an ever spinning vector, and the vector between the particle and the center of the sphere.   
            39.
            
              Vortex Velocity
               Add Vortex Velocity module to the Particle Update section.   
            40.
            
              Vortex Velocity
               Click the first Fix issue button to add its dependency on the SolveForcesAndVelocity module.   
            41.
            
              Vortex Velocity
               Set the value type of Velocity Amount to Random Range Float   
            42.
            
              Vortex Velocity
               1. Set the Minimum value of Velocity Amount to 50.0 and the Maximum value to 160.0.
2. Set the value type of Vortex Axis to Lerp Vector.   
            43.
            
              Vortex Velocity
               Set the value of A Vector of Vortex Axis to Random Vector.   
            44.
            
              Vortex Velocity
               Set the value of B Vector of Vortex Axis to Random Vector.   
            45.
            
              Vortex Velocity
               Set the value of Alpha of the Vortex Axis to the Normalized Age of the particle.   
            46.
            
              Scale Sprite Size
               Add the Scale Sprite Size module to the Particles Update section.   
            47.
            
              Scale Sprite Size
               Edit the Scale Factor's value to Vector 2DFrom Float.   
            48.
            
              Scale Sprite Size
               Set its value type to Float from Curve.   
            49.
            
              Scale Sprite Size
               Edit this curve to control its value over time   
            50.
            
              Scale Sprite Size
               Select the first point and drag it to the bottom.
Note: Here you can also select this point and directly set its Time to: 0 and Value to 0.   
            51.
            
              Scale Sprite Size
               Mouse over the small red circle, right click, and select Add key to Curve.   
            52.
            
              Scale Sprite Size
               Set the Time of the newly added point to 0.5 and the Value to 2.   
            53.
            
              Scale Sprite Size
               Sometimes, the newly set points will go beyond the boundaries of the existing chart. You can adjust the chart boundaries by clicking on the button circled in red.   
            54.
            
              Scale Sprite Size
               In the same way, add two points: (time 0.07, value 1), (time 0.94, value 1).   
            55.
            
              Facing Mode
               Select Sprite Renderer, then set Facing Mode to Custom Facing Vector
With this setting, The sprite billboard faces toward the Particles.SpriteFacing vector attribute. If the Particles.SpriteFacing attribute is missing, this falls back to FaceCamera mode.
FaceCamera mode: The sprite billboard origin is always "looking at" the camera origin, trying to keep its up axis aligned to the camera's up axis.   
            56.
            
              Sorting Mode
               Select Sprite Renderer, then set Sorting Mode to View Distance
This will set the priority to rendering: Sort by distance to the camera's origin   
            57.
            
              Bindings
               Particles.SpriteFacing is not the only Renderer Binding which is handled automatically by the simulation and has special meaning. Click a renderer, in this case the Sprite Renderer at the bottom of the stack, and scroll down to Bindings
You will see a list of particle attributes which have special meaning to the renderers which reference them. Each can be overwritten with other attributes if desired.