Question: When should you use _process and _physics_process in Godot?
Answer
In Godot, both _process(delta)
and _physics_process(delta)
are callback functions that are called every frame, but they serve different purposes and are synchronized with different parts of the engine's loop cycle.
_process(delta)
Use _process(delta)
when you need to update something on every frame regardless of the physics. This is where you put your code for anything that doesn't require precise synchronization with the physics engine, such as:
- Animating sprites or UI elements
- Handling game logic that isn't physics-related
- Updating non-physics game state
The delta
parameter represents the time elapsed (in seconds) since the last frame. It helps ensure that updates occur at a consistent rate, regardless of frame rate variations.
Here's an example of using _process(delta)
:
func _process(delta): # Rotate a node at a constant rate rotation_degrees += 90 * delta
_physics_process(delta)
On the other hand, _physics_process(delta)
is specifically designed to run in sync with the physics engine. This means it's called at a fixed interval, ensuring consistent physics simulation. Use _physics_process(delta)
for:
- Moving objects using the physics engine (e.g.,
RigidBody
,KinematicBody
) - Checking physics interactions like collisions
- Applying forces or impulses to physics bodies
Similar to _process
, the delta
parameter here indicates the fixed amount of time between physics frames, ensuring consistent physics behavior.
Here's how you might use _physics_process(delta)
:
func _physics_process(delta): # Apply a constant force to a RigidBody if Input.is_action_pressed("ui_up"): $RigidBody.apply_central_impulse(Vector3(0, -10, 0) * delta)
Key Differences
_process(delta)
is called every frame and its frequency can vary depending on the frame rate._physics_process(delta)
is called at a fixed frequency, matching the physics tick of the engine, which by default is 60 times per second.
It's important to choose the right function based on what you need to achieve in your game for smooth gameplay and accurate physics simulation.
Was this content helpful?
Other Common Game Engines Questions (and Answers)
- Can You Use C# in Unreal Engine?
- Is Unreal Engine Open Source?
- Can Unreal Engine make 2D games?
- Does Unreal Engine Use C++?
- Does Unreal Engine Use Python?
- What Language Does Unreal Engine Use?
- Does Unreal Engine Use JavaScript?
- Does Unreal Engine work on Linux?
- How Do I Uninstall Unreal Engine 5?
- Is Blender or Unreal Engine Better?
- Is Unreal Engine Good for Beginners?
- Does Unreal Engine Work on Mac?
Free System Design on AWS E-Book
Download this early release of O'Reilly's latest cloud infrastructure e-book: System Design on AWS.
Switch & save up to 80%
Dragonfly is fully compatible with the Redis ecosystem and requires no code changes to implement. Instantly experience up to a 25X boost in performance and 80% reduction in cost