Spaces:
Runtime error
Runtime error
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<EntityView>(); | |
var frame = QuantumRunner.Default.Game.Frames.Verified; | |
var controller = frame.Get<Controller>(_view.EntityRef); | |
if (QuantumRunner.Default.Session.IsLocalPlayer(controller.Player)) | |
{ | |
Camera.main.GetComponent<CameraFollow>().Target = transform; | |
} | |
if (frame.TryGet<Traktor>(_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<Drivable>(_sphere, out var drivable) && drivable.Grounded && frame.TryGet<PhysicsBody3D>(_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; | |
} | |
} | |