private void LateUpdate() { float dt = Time.deltaTime; longitude += dt * longitudeSpeed * SpeedFactor; latitude.val += dt * latitude.speed; distance.val += dt * distance.speed; Vector3 fwd = Vector3.forward * distance.Evaluate() * DistanceFactor; transform.position = center + Quaternion.Euler(-latitude.Evaluate(), longitude, 0) * fwd + Vector3.up * HeightOffset; transform.LookAt(LookTarget + transform.right * offset.x + transform.up * offset.y); }