Advertisement
LeeMace

No Air Driving

Dec 16th, 2022
35
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.47 KB | Gaming | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using TMPro;
  5.  
  6. public class PlayerController : MonoBehaviour
  7. {
  8.     //prevent driving in the air
  9.     [SerializeField] List<WheelCollider> allWheels;
  10.     [SerializeField] int wheelsOnGround;
  11.  
  12.     private Rigidbody playerRb;
  13.  
  14.     void FixedUpdate()
  15.     {
  16.         if (IsOnGround())
  17.         {
  18.         //commented out the old code to move forward and replaced with the new line below
  19.         //transform.Translate(Vector3.forward * Time.deltaTime * horsePower * forwardInput);
  20.         //Move the vehicle forward
  21.         playerRb.AddRelativeForce(Vector3.forward * forwardInput * horsePower);
  22.         //have vehicle rotate as it turns
  23.         transform.Rotate(Vector3.up * Time.deltaTime * turnSpeed * horizontalInput);
  24.  
  25.         //speedometer
  26.         speed = Mathf.Round(playerRb.velocity.magnitude * 3.6f);
  27.         speedometerText.SetText("Speed: " + speed + "kph");
  28.  
  29.         //rpm
  30.         rpm = Mathf.Round((speed % 30) * 40);
  31.         rpmText.SetText("RPM: " + rpm);
  32.         }
  33.     }
  34.  
  35.     //prevent driving in the air
  36.     bool IsOnGround()
  37.     {
  38.         wheelsOnGround = 0;
  39.         foreach (WheelCollider wheel in allWheels)
  40.         {
  41.             if (wheel.isGrounded)
  42.             {
  43.                 wheelsOnGround++;
  44.             }
  45.         }
  46.         if (wheelsOnGround == 4)
  47.         {
  48.             return true;
  49.         }
  50.         else
  51.         {
  52.             return false;
  53.         }
  54.     }
  55. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement