protected override void Update(TimeSpan gameTime) { if (_followEntityTransform != null) { Vector3 followEntityPosition = _followEntityTransform.LocalPosition; Vector3 followEntityPositionNormalize = _followEntityTransform.LocalPosition; followEntityPositionNormalize.Normalize(); Quaternion quaternion = Quaternion.CreateFromTwoVectors(Vector3.UnitX, followEntityPositionNormalize); Vector3 offsetTransformed = Vector3.Transform(this.Offset, quaternion); _transform.LocalPosition = followEntityPosition + offsetTransformed; _transform.LocalLookAt(followEntityPosition, Vector3.Up); } }