ForceMove (2 | 3)
Function. Simulates physics by applying forces, winds, and air resistance to a particle's position and velocity.
Each frame, the block calculates new position and velocity based on the applied forces and time delta. This is the primary block for physics-based particle motion.
Typically, you connect a particle's Position and Velocity properties as inputs, and route the outputs back to their respective updaters.
Properties & inputs:
- Position (input): Current position to update.
- Velocity (input): Current velocity to update.
- Air resistance (input | property): Drag coefficient. Good values are in range [0; 5]. Zero means no drag.
- Num. forces (property): Number of force vectors to apply.
- Force # (input | property): A force vector. The length and direction define the acceleration applied each second (e.g., gravity: {0, -980, 0}).
- Num. winds (property): Number of wind vectors.
- Wind # (input | property): A wind vector. Wind only has effect when Air resistance is non-zero. It applies a force proportional to the difference between wind speed and particle speed.
A wind input does not have to be a constant. Feeding it Curl Noise gives a swirling, divergence-free flow that particles follow around obstacles rather than piling up in; the legacy Noise3 gives turbulent gusts. The Emitter Guide's Movement → Forces section builds either of these for you: Add Wind... and Add Force... both offer Directed, Curl and Turbulence (legacy). Since a wind has no effect at all while Air resistance is zero, adding a wind also fills in a small Air resistance for you — but only while it is still zero, so a value you set yourself is never overwritten.
Outputs:
- Position: Updated position after applying physics.
- Velocity: Updated velocity after applying physics.