LowLevelPhysics2D API workflow
Create a 2D scene with objects that react to physics using the LowLevelPhysics2D API.
Read time 3 minutesLast updated 13 days ago
Create a 2D scene that simulates physics using the API.
LowLevelPhysics2DFollow these steps:
- Include the LowLevelPhysics2D library in a C# script.
- Create a 2D physics world.
- Create physics objects and add them to the world.
- Configure objects with definitions.
- Attach the script to a GameObject, then enter Play mode.
Include the LowLevelPhysics2D library
In a C# script, add at the top to include the library.
using UnityEngine.LowLevelPhysics2D;LowLevelPhysics2DYou can use the API in any C# script, not only MonoBehaviour script files. But if you use a MonoBehaviour script file, you can configure physics properties in the window of a GameObject, move GameObjects, and attach sprites.
LowLevelPhysics2DInspector
?
Create a 2D physics world
To add 2D physics objects, you first need to create a object to add them to. Do either of the following:
PhysicsWorld- Use the world Unity automatically creates.
- Create a new world.
For more information, refer to Create a physics world.
Create physics objects
To add physics objects to the world, do the following:
- Create a object, which defines the position, rotation, and velocity of an object. It doesn't define an area.
PhysicsBody - Attach one or more objects to the
PhysicsShape, which define the area that interacts with other shapes. Unity also draws the shapes as a debug visualization.PhysicsBody - Add the body to the world you created.
For more information, refer to Create a physics object.
Configure objects with definitions
To configure the properties of the world and its physics objects, create definition objects, for example . Definition objects contain properties like and that you can adjust in the Unity Editor, or pass into the object when you create it.
PhysicsBodyDefinitionpositiongravityTo configure the properties in the Inspector window, make the definition object a field.
publicFor more information, refer to Configure objects using definitions.
Attach the script to a GameObject
To start the simulation, you usually attach the script to a GameObject in your scene, then enter Play mode.
By default, physics objects don't move a GameObject. To make a physics object update the Transform component of the GameObject, refer to Move a GameObject with the LowLevelPhysics2D API.
To add a sprite, refer to Add a sprite to an object.
Example
The following example creates a small circle that falls under gravity onto a large circle. Attach the script to a GameObject in your scene, then enter Play mode.
using UnityEngine;using UnityEngine.LowLevelPhysics2D;public class Example2DPhysics : MonoBehaviour{ void Start() { // Create the world PhysicsWorld world = PhysicsWorld.defaultWorld; // Create a body in the world, with a definition object that sets the position and enables physics PhysicsBody object1 = world.CreateBody(new PhysicsBodyDefinition { position = new Vector2(0.5f, 8f), type = PhysicsBody.BodyType.Dynamic }); // Attach a circle shape to the first body PhysicsShape object1shape = object1.CreateShape(new CircleGeometry()); // Create a second body in the world, with a definition object that sets the position and disables physics PhysicsBody object2 = world.CreateBody(new PhysicsBodyDefinition { position = new Vector2(0f, 0f), type = PhysicsBody.BodyType.Static }); // Attach a circle shape to the second body object2.CreateShape(new CircleGeometry { radius = 3f, }); }}
Additional resources
- PhysicsCore2D repository on GitHub