Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
  • Help Room /
avatar image
0
Question by Mativve · Jan 08, 2017 at 09:30 AM · scripting problemscript.carslowdown

How to make brake car ?

Hi ! Its me again :D. I have a problem with my car script. I want make when I press arrow down my car slow down but when i press Space my car 'simulate handbraking' but I dont know how to make this.

In this script my car slow down but veeeery slow. Someone want to help me? Thank you for any help.

I using script from this video: https://www.youtube.com/watch?v=xQcJAa6Ooa4

Script C#:

 using UnityEngine;
 using System.Collections;
 
 public class RearWheelDriveXp : MonoBehaviour
 {
 
     private WheelCollider[] wheels;
 
     public float maxAngle = 30;
     public float maxTorque = 300;
 
     public float topSpeed = 100; // km per hour
     public float currentSpeed = 0;
     private float pitch = 4f;
 
     public Transform visualCar;
 
     public GameObject CarEngine;
 
     // here we find all the WheelColliders down in the hierarchy
     public void Start()
     {
         wheels = GetComponentsInChildren<WheelCollider>();
         GetComponent<Rigidbody>().centerOfMass = visualCar.localPosition;
     }
 
     // this is a really simple approach to updating wheels
     // here we simulate a rear wheel drive car and assume that the car is perfectly symmetric at local zero
     // this helps us to figure our which wheels are front ones and which are rear
     public void Update()
     {
 
 
         float angle = maxAngle * Input.GetAxis("Horizontal");
         float torque = maxTorque * Input.GetAxis("Vertical");
 
         foreach (WheelCollider wheel in wheels)
         {
             // a simple car where front wheels steer while rear ones drive
             if (wheel.transform.localPosition.z > 0)
                 wheel.steerAngle = angle;
 
             if (wheel.transform.localPosition.z < 0)
                 wheel.motorTorque = torque;
 
             // update visual wheels if any
             {
                 Quaternion q;
                 Vector3 p;
                 wheel.GetWorldPose(out p, out q);
 
                 // assume that the only child of the wheelcollider is the wheel shape
                 Transform shapeTransform = visualCar.FindChild(wheel.name);
                 shapeTransform.position = p;
                 shapeTransform.rotation = q;
             }
 
         }
 
         // CURRENT SPEED
         currentSpeed = GetComponent<Rigidbody>().velocity.magnitude;
 
         pitch = currentSpeed / topSpeed;
         CarEngine.GetComponent<AudioSource>().pitch = pitch + 0.5f;
     }
 
     public void FixedUpdate()
     {
         if (currentSpeed > topSpeed)
         {
             GetComponent<Rigidbody>().velocity = GetComponent<Rigidbody>().velocity.normalized * topSpeed;
         }
     }
 }
 


Comment
Add comment · Show 1
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image DevsGoingViral · Jan 08, 2017 at 01:53 PM 0
Share
      for(var WC:WheelCollider in wheels)
      {
          WC.brakeTorque = 300; // anything of high value will do,low value will make car      //gradually slow down
      }

Sorry java script above.This will grab all wheels component in your wheels array and apply instant brake force.Same approach you can use to assign brake only into back wheels. Hope this helps \e/ .

2 Replies

· Add your reply
  • Sort: 
avatar image
2
Best Answer

Answer by DevsGoingViral · Jan 08, 2017 at 10:50 PM

Hi,you can do something like this for stopping the car:

 var Brakes : float;
 
 function Update(){
 Brakes = 0;
          if (Input.GetKey(KeyCode.Space) == true){
              Brakes = 300;
          }
        for(var WC:WheelCollider in wheelcolliders){
          WC.brakeTorque = Brakes;
         }
 }

Comment
Add comment · Show 3 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image DevsGoingViral · Jan 08, 2017 at 10:59 PM 0
Share

This whole code will work.You just needed to specify in what case "brakeTourque" is 300,in this code example it is when space bar is pressed like you wanted :).In function update "Brakes = 0" will make sure you don't apply any braking power until you hit spacebar.

avatar image Mativve DevsGoingViral · Jan 09, 2017 at 02:25 PM 0
Share

@mika123 Thank you soooooooo much! You're awesome! :D

avatar image DevsGoingViral Mativve · Jan 11, 2017 at 11:36 PM 0
Share

No problem man,thank you. \e/

avatar image
0

Answer by Mativve · Jan 08, 2017 at 05:44 PM

@mika123 I use http://www.m2h.nl/files/js_to_c.php to convert :D but i have next problem. My car don't want go. Nothing happens. What I do wrong ?

I paste your script in Update() function. Script look that:

     // here we find all the WheelColliders down in the hierarchy
     public void Start()
     {
         wheels = GetComponentsInChildren<WheelCollider>();
         GetComponent<Rigidbody>().centerOfMass = visualCar.localPosition;
     }
 
     // this is a really simple approach to updating wheels
     // here we simulate a rear wheel drive car and assume that the car is perfectly symmetric at local zero
     // this helps us to figure our which wheels are front ones and which are rear
     public void Update()
     {
 
 
         float angle = maxAngle * Input.GetAxis("Horizontal");
         float torque = maxTorque * Input.GetAxis("Vertical");
 
         foreach (WheelCollider WC in wheels)
         {
             WC.brakeTorque = 300; // anything of high value will do,low value will make car      //gradually slow down
         }
 
         foreach (WheelCollider wheel in wheels)
         {
             // a simple car where front wheels steer while rear ones drive
             if (wheel.transform.localPosition.z > 0)
                 wheel.steerAngle = angle;
 
             if (wheel.transform.localPosition.z < 0)
                 wheel.motorTorque = torque;
 
             // update visual wheels if any
             {
                 Quaternion q;
                 Vector3 p;
                 wheel.GetWorldPose(out p, out q);
 
                 // assume that the only child of the wheelcollider is the wheel shape
                 Transform shapeTransform = visualCar.FindChild(wheel.name);
                 shapeTransform.position = p;
                 shapeTransform.rotation = q;
             }
 
         }

Comment
Add comment · Show 1 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image DevsGoingViral · Sep 15, 2018 at 09:26 PM 0
Share
           if (Input.Get$$anonymous$$ey($$anonymous$$eyCode.Space) == true){
               Brakes = 300;
           }
           else{
                     Brakes = 0; 
            }

You need to set the brakes back to 0 when player not braking anymore. As also in your code you applying brakes all the time and not when something is pressed.Sorry i didn't saw your comment earlier. :S

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

5 People are following this question.

avatar image avatar image avatar image avatar image avatar image

Related Questions

Make the car stop by hitting the wall 1 Answer

Move to next animation with clicking the game object 0 Answers

How to stop movement script on void start and resume after. 0 Answers

WaitForSeconds won't wait (Corotine),WaitForSeconds not waiting 0 Answers

Button appears when switching between scenes or quitting game 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges