Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 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 /
avatar image
0
Question by khubaibqaiser · May 17, 2015 at 08:23 PM · rotationwheelcolliderwheelbike

Bike wheel rotation on x-axis and steering on y-axis

I am making a bike racing game. So far I have a 3D model of a bike and I have got it to move using wheel colliders. The problem is that I want both, front and rear wheels, to rotate according to the velocity of the bike. But, only the rear wheel is rotating according to the velocity of the bike (rigidbody). The front wheel is rotating (only steering) correctly but its not rotating on x-axis. I want front wheel to rotate on x-axis as well like the rear wheel and also rotate on y-axis to give the effect of steering.

My project Hierarchy looks like this for the bike:

 Bike
  - Bike_Body (bike body except front and rear wheels)
  - centerOfMass (empty object with position (0,-8,0) to stabilize bike)
  - wheels
     - frontWheel (empty object with wheel collider)
       - frontwheelTyre (having model of bike front wheel)
     - rearWheel (empty object with wheel collider)
       - rearwheelTyre (having model of bike rear wheel)

The script I am using is:

 using UnityEngine;
 using System.Collections;
 using System.Collections.Generic;
 
 public class BikeController : MonoBehaviour
 {
     public List<BikeAxleInfo> axleInfos;
     public float maxMotorTorque;
     public float maxSteeringAngle;
     public Transform centerOfMass;
     public Vector3 inertiaTensorVector;
     private float motor;
     private float steering;
 
     void Start() {
         rigidbody.centerOfMass = centerOfMass.position;
         rigidbody.inertiaTensorRotation = Quaternion.identity;
         rigidbody.inertiaTensor = inertiaTensorVector * rigidbody.mass;
     }
 
     void FixedUpdate()
     {
         motor = maxMotorTorque * Input.GetAxis("Vertical");
         steering = maxSteeringAngle * Input.GetAxis("Horizontal");
         foreach (BikeAxleInfo axleInfo in axleInfos)
         {
             if (axleInfo.steering)
             {
                 axleInfo.wheelCol.steerAngle = steering;
                 axleInfo.wheel.localEulerAngles = new Vector3(0,steering,0);
             }
             if (axleInfo.motor)
             {
                 axleInfo.wheelCol.motorTorque = motor;
             }
             axleInfo.wheel.Rotate(new Vector3(rigidbody.velocity.z, 0, 0));
         }
     }
 }
 
 [System.Serializable]
 public class BikeAxleInfo
 {
     public WheelCollider wheelCol;
     public Transform wheel;
     public bool motor;
     public bool steering;
 }

What am I doing wrong? Kindly help please...

Comment
Add comment
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

1 Reply

· Add your reply
  • Sort: 
avatar image
3

Answer by FortisVenaliter · May 18, 2015 at 06:33 PM

You're probably going to want an empty "Steering Axle" game object between the "wheels" and "frontwheel" objects in the hierarchy. Then rotate that for steering, and let the wheels do their own thing.

Comment
Add comment · Show 2 · 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 khubaibqaiser · May 19, 2015 at 05:43 AM 0
Share

It worked! Thanks a lot Fortis Venaliter :)

avatar image FortisVenaliter · May 19, 2015 at 06:13 PM 0
Share

Glad that worked for you. Please be sure to mark my answer as the correct one so others searching will see this question as answered and can reference it.

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

2 People are following this question.

avatar image avatar image

Related Questions

Weird wheel rotation 1 Answer

How make front wheel bike turn left or right? 1 Answer

WheelCollider rotates mesh wrong 1 Answer

Problems with WheelColliders' settings 1 Answer

Wheel picker 0 Answers


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