Edit - 2D: Use lerp
to interpolate the global position to the target's global position.
onready var target = get_node("path/to/node")
var speed : float
func _process(delta):
set_global_position(lerp(get_global_position(), target.get_global_position(), delta*speed)
For 3D: You could replace your camera with an InterpolatedCamera, or use a lerp
. Because the camera is a child of the player you will need to use global_transform.origin
, and InterpolatedCamera (from my experience) seems to use transform.origin
instead. By all means try the InterpolatedCamera, if that doesn't work here's a lerp
script.
onready var target = get_node("path/to/node")
var speed : float
func _process(delta):
global_transform.origin = lerp(global_transform.origin, target.global_transform.origin, delta*speed)
var current_rotation = Quat(global_transform.basis)
var next_rotation = current_rotation.slerp(Quat(target.global_transform.basis), delta*speed)
global_transform.basis = Basis(next_rotation)