private void SetYawVelocity() { Vector3 YawVelocity = new Vector3(); float tilt = Vector3.Dot(_Car.ProjectedWorldVelocity, _Car.transform.right); if (_Car.ProjectedWorldVelocity.magnitude != 0) { YawVelocity = _Car.transform.up * _Car.CarManager.Inputs._SteerAxis * _Car.CarManager.YawTurnRate; //_Car.CarManager.ModelTransform.RotateAround(Vector3.Cross(_Car.transform.up, _Car.ProjectedWorldVelocity).normalized, _Car.CarManager.BankingRate * -0.0015f * _Car.LocalVelocity.z * (1f - Mathf.Abs(Vector3.Dot(_Car.transform.forward.normalized, _Car.ProjectedWorldVelocity.normalized) * 1.8f)) * Time.fixedDeltaTime); //_Car.CarManager.ModelTransform.RotateAround(Vector3.Cross(_Car.transform.up, _Car.ProjectedWorldVelocity).normalized, _Car.CarManager.BankingRate * -0.001f * _Car.LocalVelocity.z * Time.fixedDeltaTime); _Car.CarManager.ModelTransform.RotateAround(_Car.transform.forward, _Car.CarManager.BankingRate * 0.00075f * tilt * Time.fixedDeltaTime); _Car.CarManager.ModelTransform.RotateAround(-_Car.transform.forward, _Car.CarManager.Inputs._SteerAxis * _Car.CarManager.BankingRate * Time.fixedDeltaTime); } float tiltAngle = Vector3.SignedAngle(_Car.transform.up, _Car.CarManager.ModelTransform.up, _Car.transform.forward); _Car.CarManager.ParticleHandler.SetTilt(tiltAngle); if (_Car.CarManager.ParticleHandler.IsSparking) { _Car.CarManager.SetModelPosition(_Car.transform.position + Random.insideUnitSphere * 0.03f); } else { _Car.CarManager.SetModelPosition(_Car.transform.position); } _Car.SetAngularVelocity(YawVelocity); }
private void SetYawVelocity() { Vector3 YawVelocity = new Vector3(); if (_Car.ProjectedWorldVelocity.magnitude != 0) { YawVelocity = _Car.transform.up * _Car.CarManager.Inputs._SteerAxis * _Car.CarManager.YawTurnRate; _Car.CarManager.ModelTransform.RotateAround(-_Car.transform.forward, _Car.CarManager.Inputs._SteerAxis * _Car.CarManager.BankingRate * Time.fixedDeltaTime); } _Car.SetAngularVelocity(YawVelocity); }