// Called every frame. 'delta' is the elapsed time since the previous frame. public override void _PhysicsProcess(float delta) { if (Target != null) { var targetPos = Target.GlobalTransform.Translated(Offset); GlobalTransform = GlobalTransform.InterpolateWith(targetPos, LerpSpeed * delta); LookAt(Target.GlobalTransform.origin, Vector3.Up); if (LockYPos) { this.SetGlobalOriginY(OriginalPos.y); } if (LockYRot) { this.SetGlobalBasisY(OriginalRot.y); } GlobalTransform = GlobalTransform.Orthonormalized(); } }