.. _doc_advanced_physics_interpolation: Advanced physics interpolation ============================== Although the previous instructions will give satisfactory results in a lot of games, in some cases you will want to go a stage further to get the best possible results and the smoothest possible experience. Exceptions to automatic physics interpolation ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Even with physics interpolation active, there may be some local situations where you would benefit from disabling automatic interpolation for a `Node void: # Find the target node _target = get_node("../Player") # Turn off automatic physics interpolation for the Camera, # we will be doing this manually set_physics_interpolation_mode(Node.PHYSICS_INTERPOLATION_MODE_OFF) func _process(delta: float) -> void: # Find the current interpolated transform of the target var tr : Transform = _target.get_global_transform_interpolated() # Provide some delayed smoothed lerping towards the target position _target_pos = lerp(_target_pos, tr.origin, min(delta, 1.0)) # Fixed camera position, but it will follow the target look_at(_target_pos, Vector3(0, 1, 0)) Mouse look ^^^^^^^^^^ Mouse look is a very common way of controlling Cameras. But there is a problem. Unlike keyboard input which can be sampled periodically on the physics tick, mouse move events can come in continuously. The Camera will be expected to react and follow these mouse movements on the next frame, rather than waiting until the next physics tick. In this situation, it can be better to disable physics interpolation for the Camera node (using `Node.physics_interpolation_mode