using Quantum; using UnityEngine; using Photon.Deterministic; public class TraktorView : MonoBehaviour { Vector3 _lastPosition; public float SpeedThreshold = 0.1f; public float RaycastDistance = 0.51f; public float RotationFactor = 8f; public Transform TraktorBody; Quaternion _desiredRotation; private bool _wasGrounded; private EntityView _view; private EntityRef _sphere; void Start() { _view = GetComponent(); var frame = QuantumRunner.Default.Game.Frames.Verified; var controller = frame.Get(_view.EntityRef); if (QuantumRunner.Default.Session.IsLocalPlayer(controller.Player)) { Camera.main.GetComponent().Target = transform; } if (frame.TryGet(_view.EntityRef, out var traktor)) { _sphere = traktor.Sphere; } _lastPosition = transform.position; _desiredRotation = transform.rotation; } private void LateUpdate() { var frame = QuantumRunner.Default.Game.Frames.Predicted; if (frame.TryGet(_sphere, out var drivable) && drivable.Grounded && frame.TryGet(_sphere, out var body)) { var direction = body.Velocity.ToUnityVector3(); _desiredRotation = Quaternion.LookRotation(direction.normalized, drivable.SurfaceNormal.ToUnityVector3()); var euler = _desiredRotation.eulerAngles; euler.y = 0; _desiredRotation = Quaternion.Euler(euler); } TraktorBody.localRotation = Quaternion.Slerp(TraktorBody.localRotation, _desiredRotation, RotationFactor * Time.deltaTime); _lastPosition = transform.position; } }