示例#1
0
    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;
    }
示例#2
0
 private void Start()
 {
     foreach (var wheel in cpWheelData.physicsWheelPoints)
     {
         _mapWheelToLastHitCache[wheel] = new WheelHitData();
     }
 }