force | Components of the force in the X and Y axes. |
mode | The method used to apply the specified force. |
Apply a force to the rigidbody.
The force is specified as two separate components in the X and Y directions (there is no Z direction in 2D physics). The object will be accelerated by the force according to the law force = mass x acceleration - the larger the mass, the greater the force required to accelerate to a given speed.
If you don’t specify a ForceMode2D the default will be used.
The default in this case is ForceMode2D.Force which adds force over time, using mass.
To use the example scripts below, drag and drop your chosen script onto a Sprite in the Hierarchy. Make sure that the Sprite has a Rigidbody2D component.
See Also: AddForceAtPosition, AddTorque, mass, velocity, AddForce, ForceMode2D.
// The sprite will fall under its weight. After a short time the // sprite will start its upwards travel due to the thrust force that is added // in the opposite direction
using UnityEngine; using System.Collections;
public class ExampleTwo : MonoBehaviour { private Rigidbody2D rb2D; private float thrust = 10.0f;
void Start() { rb2D = gameObject.AddComponent<Rigidbody2D>(); transform.position = new Vector3(0.0f, -2.0f, 0.0f); }
void FixedUpdate() { rb2D.AddForce(transform.up * thrust); } }
// For short bursts of force (such as an explosion) use ForceMode2D.Impulse // This adds an instant force impulse to the Rigidbody2D, using mass
using System.Collections; using UnityEngine;
public class ExampleOne : MonoBehaviour { private Rigidbody2D rb2D; private float thrust = 10.0f;
private void Start() { rb2D = gameObject.AddComponent<Rigidbody2D>(); transform.position = new Vector3(0.0f, -2.0f, 0.0f); }
private void Update() { if (Input.GetKeyDown(KeyCode.Space)) { rb2D.AddForce(transform.up * thrust, ForceMode2D.Impulse); } } }