private void UpdateWheelStates() { Vector3 surfaceNormal = Vector3.zero; cpWheelData.numberOfGroundedWheels = 0; cpWheelData.grounded = false; RaycastHit hit; foreach (var wheel in cpWheelData.physicsWheelPoints) { bool didhit = Physics.Raycast(wheel.position, -wheel.transform.up, out hit, wheelHeight, groundCheckLayer); WheelHitData wheelHitData = _mapWheelToLastHitCache[wheel]; wheelHitData.IsGrounded = didhit; wheelHitData.GroundData = hit; if (!didhit) { continue; } cpWheelData.grounded = true; cpWheelData.numberOfGroundedWheels += 1; surfaceNormal += hit.normal; } cpWheelData.averageWheelSurfaceNormal = surfaceNormal.normalized; }
private void Start() { foreach (var wheel in cpWheelData.physicsWheelPoints) { _mapWheelToLastHitCache[wheel] = new WheelHitData(); } }