mirror of
https://github.com/godotengine/godot-docs.git
synced 2026-01-05 22:09:56 +03:00
Clarify reasons for physics processes (#6825)
This commit is contained in:
@@ -26,7 +26,8 @@ In this guide, you will learn:
|
||||
Collision objects
|
||||
-----------------
|
||||
|
||||
Godot offers four kinds of physics bodies, extending :ref:`CollisionObject2D <class_CollisionObject2D>`:
|
||||
Godot offers four kinds of collision objects which all extend :ref:`CollisionObject2D <class_CollisionObject2D>`.
|
||||
The last three listed below are physics bodies and additionally extend :ref:`PhysicsBody2D <class_PhysicsBody2D>`.
|
||||
|
||||
- :ref:`Area2D <class_Area2D>`
|
||||
``Area2D`` nodes provide **detection** and **influence**. They can detect when
|
||||
@@ -34,8 +35,6 @@ Godot offers four kinds of physics bodies, extending :ref:`CollisionObject2D <cl
|
||||
can also be used to override physics properties, such as gravity or damping,
|
||||
in a defined area.
|
||||
|
||||
The other three bodies extend :ref:`PhysicsBody2D <class_PhysicsBody2D>`:
|
||||
|
||||
- :ref:`StaticBody2D <class_StaticBody2D>`
|
||||
A static body is one that is not moved by the physics engine. It participates
|
||||
in collision detection, but does not move in response to the collision. They
|
||||
@@ -45,7 +44,8 @@ The other three bodies extend :ref:`PhysicsBody2D <class_PhysicsBody2D>`:
|
||||
- :ref:`RigidBody2D <class_RigidBody2D>`
|
||||
This is the node that implements simulated 2D physics. You do not control a
|
||||
``RigidBody2D`` directly, but instead you apply forces to it (gravity, impulses,
|
||||
etc.) and the physics engine calculates the resulting movement. :ref:`Read more about using rigid bodies. <doc_rigid_body>`
|
||||
etc.) and the physics engine calculates the resulting movement.
|
||||
:ref:`Read more about using rigid bodies. <doc_rigid_body>`
|
||||
|
||||
- :ref:`CharacterBody2D <class_CharacterBody2D>`
|
||||
A body that provides collision detection, but no physics. All movement and
|
||||
@@ -83,15 +83,19 @@ These nodes allow you to draw the shape directly in the editor workspace.
|
||||
Physics process callback
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
The physics engine may spawn multiple threads to improve performance, so
|
||||
it can use up to a full frame to process physics. Because of this, the value
|
||||
of a body's state variables such as ``position`` or ``linear velocity``
|
||||
may not be accurate for the current frame.
|
||||
The physics engine runs at a fixed rate (a default of 60 iterations per second). This rate
|
||||
is typically different from the frame rate which fluctuates based on what is rendered and
|
||||
available resources.
|
||||
|
||||
In order to avoid this inaccuracy, any code that needs to access a body's properties should
|
||||
be run in the :ref:`Node._physics_process() <class_Node_method__physics_process>`
|
||||
callback, which is called before each physics step at a constant frame rate
|
||||
(60 times per second by default). This method will be passed a ``delta``
|
||||
It is important that all physics related code runs at this fixed rate. Therefore Godot
|
||||
differentiates :ref:`between physics and idle processing <doc_idle_and_physics_processing>`.
|
||||
Code that runs each frame is called idle processing and code that runs on each physics
|
||||
tick is called physics processing. Godot provides two different callbacks, one for each
|
||||
of those processing rates.
|
||||
|
||||
The physics callback, :ref:`Node._physics_process() <class_Node_method__physics_process>`,
|
||||
is called before each physics step. Any code that needs to access a body's properties should
|
||||
be run in here. This method will be passed a ``delta``
|
||||
parameter, which is a floating-point number equal to the time passed in
|
||||
*seconds* since the last step. When using the default 60 Hz physics update rate,
|
||||
it will typically be equal to ``0.01666...`` (but not always, see below).
|
||||
|
||||
Reference in New Issue
Block a user