Documentation

Unity Engine


User Manual

Script Reference

Unity Engine


Physics 2D project settings reference

Learn about Physics 2D settings.
Read time 9 minutesLast updated 13 days ago

The following Project settings manage the global settings for Physics 2D, which define the limits on the accuracy of the physics simulation of 2D GameObjects in the Unity physics system. A more accurate simulation requires more processing overhead, and these settings allow you to adjust the trade-off between accuracy and performance that best suits your project.
To open the Physics 2D project settings window, go to Edit > Project Settings… > Physics 2D to manage the global Project settings for Physics 2D
Note
To manage the global settings for 3D physics instead, refer to the Physics Project settings reference page.

Physics 2D Inspector settings

General Settings tab

The following are the properties available in the General Settings tab of the Physics 2D manager window.

Property

Function

GravitySet the amount of gravity applied to all Rigidbody 2D GameObjects. Usually you only set gravity for the negative direction of the y-axis.
Default MaterialSet a reference to the Physics Material 2D to use if none has been assigned to an individual Collider 2D.
Velocity IterationsSet the number of iterations made by the physics system to resolve velocity effects. Higher numbers result in more accurate physics calculations but the Editor requires more CPU time.
Position IterationsSet the number of iterations made by the physics system to resolve position changes. Higher numbers result in more accurate physics calculations but also requires more CPU time.
Bounce ThresholdSet the threshold for elastic collisions. Unity treats any collisions with a relative linear velocity below this threshold as inelastic, so no bounce will occur.
Max Linear CorrectionSet the maximum linear position correction used when solving constraints (from a range between 0.0001 to 1000000). This helps to prevent overshooting.
Max Angular CorrectionSet the maximum angular correction used when solving constraints (from a range between 0.0001 to 1000000). This helps to prevent overshooting.
Max Translation SpeedSet the maximum linear speed of a Rigidbody 2D GameObject during any physics update.
Max Rotation SpeedSet the maximum rotation speed of a Rigidbody 2D GameObject during any physics update.
Baumgarte ScaleSet the scale factor that determines how fast Unity resolves collision overlaps.
Baumgarte Time of Impact ScaleSet the scale factor that determines how fast Unity resolves time-of-impact overlaps.
Time to SleepSet the time (in seconds) that must pass after a Rigidbody 2D stops moving before it goes to sleep.
Linear Sleep ToleranceSet the linear speed below which a Rigidbody 2D goes to sleep after the Time to Sleep elapses.
Angular Sleep ToleranceSet the rotational speed below which a Rigidbody 2D goes to sleep after Time to Sleep elapses.
Default Contact OffsetSet a proximity distance value for Colliders to be considered in contact, even when they aren't actually in contact. Colliders whose distance is less than the sum of their
contactOffset
values generate contacts, which causes the collision detection system to predictively enforce the contact constraint even when the objects are slightly separated.
Caution: Reducing this value too far can slow down Unity's ability to calculate continuous polygon collisions. Conversely, increasing the value too much might create artifacts for vertex collisions.
Simulation ModeSelect when Unity executes the 2D physics simulation.
Simulation LayersSelect which layer(s) Unity simulates when Simulation Mode is set to FixedUpdate or Update.
  • The Everything option is selected by default, which automatically selects all layers and includes all of them in the physics simulation.
  • You can select which specific layer(s) to include in the simulation, and Unity will only simulate the Rigidbody2D, joints, effectors, and contacts between Collider2D on those selected layers.
Queries Hit TriggersEnable this option if you want Collider 2Ds marked as Triggers to return a hit when any physics query (such as Linecasts or Raycasts) intersects with them. Defaults to enabled.
Queries Start In CollidersEnable this option if you want physics queries that start inside a Collider 2D to detect the Collider they start in.
Callbacks On DisableEnable this option to produce collision callbacks when a Collider with contacts is disabled.
Reuse Collision CallbacksEnable this setting to have the physics system reuse a single Collision2D instance for all collision callbacks. Disable to have the physics system create a new Collision2D instance for each collision callback instead.
Auto Sync TransformsEnable this option to automatically sync transform changes with the physics system.
GizmosSelect the types of physics 2D gizmos to be drawn within the Editor. You may select multiple options.
  • Nothing: Select this to deselect every option. No physics 2D gizmo will be drawn.
  • Everything: Select this to select every option.
  • All Colliders: Select this to have all Colliders drawn without having to select them in the Hierarchy window.
  • Colliders Outlined: Select this to have Colliders drawn with an outline (you can customize the outline's color in 2D Physics Preferences).
  • Colliders Filled: Select this to have all Colliders drawn using the Fill color specified in the 2D Physics Preferences.
  • Colliders Sleeping: Select this to have Colliders drawn to show when the Rigidbody 2D they are attached to is sleeping using the Awake or Asleep colors specified in the 2D Physics Preferences.
  • Collider Contacts: Select this to have Collider contacts shown as a directional arrow that starts at the contact point in the direction of the contact normal. You can specify the Contact color of the arrow in the 2D Physics Preferences.
  • Collider Bounds: Select this to have Collider bounds drawn for all PhysicsShape2D that a Collider creates. The bounds are an Axis-Aligned Bounding Box (AABB).
MultithreadingExpand this to adjust the multithreading settings. Refer to Multithreading for information about each property.

Simulation Mode: Update

The followings properties are visible only when you select Update or Script for the Simulation Mode.

The Simulation Mode properties, with the Update mode selected.

Property

Function

Use Sub SteppingEnable this property to have the Editor use simulation sub-stepping during the simulation step.
Use Sub Step CountEnable this property to have the Editor calculate contacts for all simulation sub-steps. This provides a more exact simulation for each sub-step but will reduce performance. Disable this property to only calculate contacts for the first simulation sub-step.
Max Sub Step CountSets the maximum number of simulation sub-steps allowed per-frame when simulation sub-stepping is enabled and actively running. This will also limit the amount of time the Editor spends on sub-stepping.
Min Sub Step FPSSets the minimum frames-per-second allowed for a simulation step before the Editor begins to use sub-stepping. When the current frame rate is lower than this value, the Editor will use simulation sub-stepping if Use Sub Stepping is enabled.

Multithreading

The settings in the Multithreading section allow you to use the C# Job System to configure multithreaded physics.

Multithreading settings expanded.

Property

Function

Use MultithreadingEnable this option to execute the simulation steps using the job system and use the rest of these options to control how to achieve that.
Use Consistency SortingEnable this option if maintaining a consistent processing order becomes important to the simulation.
Executing simulation steps on multiple CPU threads produces separate batches of data. Processing these separate batches reduces determinism in processing order, although produces faster results.
Interpolation Poses Per JobSet the minimum number of Rigidbody 2D objects being interpolated in each simulation job.
New Contacts Per JobSet the minimum number of new contacts to find in each simulation job.
Collide Contacts Per JobSet the minimum number of contacts to collide in each simulation job.
Clear Flags Per JobSet the minimum number of flags to be cleared in each simulation job.
Clear Body Forces Per JobSet the minimum number of bodies to be cleared in each simulation job.
Sync Discrete Fixtures Per JobSet the minimum number of fixtures to synchronize in the broadphase during discrete island solving in each simulation job.
Sync Continuous Fixtures Per JobSet the minimum number of fixtures to synchronize in the broadphase during continuous island solving in each simulation job.
Find Nearest Contacts Per JobSet the minimum number of nearest contacts to find in each simulation job.
Update Trigger Contacts Per JobSet the minimum number of trigger contacts to update in each simulation job.
Island Solver Cost ThresholdSet the minimum threshold cost of all bodies, contacts and joints in an island during discrete island solving.
Island Solver Body Cost ScaleSet the cost scale of each body during discrete island solving.
Island Solver Contact Cost ScaleSet the cost scale of each contact during discrete island solving.
Island Solver Joint Cost ScaleSet the cost scale of each joint during discrete island solving.
Island Solver Bodies Per JobSet the minimum number of bodies to solve in each simulation job when performing island solving.
Island Solver Contacts Per JobSet the minimum number of contacts to solve in each simulation job when performing island solving.

Layer Collision Matrix tab

The Layer Collision Matrix tab settings control whether Colliders (attached to different Rigidbody 2Ds) can come into contact which each other, based on the Layer assigned to the GameObject they are on. The matrix displays each Layer against every other Layer, allowing you to select which specific Layers can come into contact with another.

The Layer Collision Matrix tab.

A check mark at the intersection between two Layers indicates that contact is allowed between those two Layers, while a cleared checkbox indicates that contact between those two Layers is never allowed. When you hover over a Layer's name or a checkbox, its row and column are highlighted to make it easier to see which Layers its affects.
Tip
To optimize for the best possible performance, you should ensure that only the minimum number of potential contacts are selected by only selecting the specific Layers that you want to have contact with others, and disabling all other unnecessary contacts. To help with this, you can select Disable All or Enable All to quickly select or deselect all options at once. and then select the specific Layers.

Additional resources