“The Car Tutorial” Part 3
Creating a Racing Game
for Unity
Part 3: Under the Hood 3
Which are the most important things? 4
Start() - the Setup 5
SetupWheelColliders() 5
SetupWheelFrictionCurve() 6
SetupWheel() 6
SetupCenterOfMass() 7
SetupGears() 8
SetUpSkidmarks() 8
Update() 9
GetInput() 9
CheckHandbrake() 10
StopHandbraking() 10
Check_If_Car_Is_Flipped() 11
FlipCar() 11
UpdateWheelGraphics() 11
UpdateGear() 13
FixedUpdate() - All your physics are belong
to me 13
UpdateDrag() 13
UpdateFriction() 15
CalculateEnginePower() 16
CalculateState() 17
ApplyThrottle() 18
ApplySteering() 20
EvaluateSpeedToTurn() 20
Real Physics Model 24
The included Prefabs 24
The included scripts 25
u
n
i
ty
“The Car Tutorial”― Creating a Racing Game for Unity, Part 3
u
n
i
ty
“The Car Tutorial”― Creating a Racing Game for Unity, Part 3
3
Part 3: Under the Hood
We’ve covered how to assemble a working car from a 3d model, scripts and built-in Components. We
have also looked at the exposed variables and how they can be used to tweak the car’s behavior.
Now it’s about time we look more in-depth at the fi ne mechanics inside the engine of the car - The
Car-script.
Double click on the • Car.js script to open it with your code editor.
This script can at fi rst glance be a little intimidating, spanning 500+ lines of codes and comments,
and a lot of variables and functions. Don’t despair though. The script is structured so that we have
relatively small functions with meaningful names, that does exactly what they say they do. Follow-
ing this, the code is not littered with comments that explains everything again - simply because the
code is telling it’s own story.
The way we suggest you to look at it is to fi nd the best entry points and then follow along. In this
case these entry points will be the Start(), Update() and FixedUpdate() functions.
Each of these “main” functions are calling other functions. So when we begin by looking at the
Start() function, we see that the fi rst function called is SetupWheelColliders(). Locate that function
in the code and study what it does, and then go back to Start() and go to the next function which
is SetupCenterOfMass(). By following this code trail you get the overview over what is actually hap-
pening in code, that makes the car work the way it does.
u
n
i
ty
“The Car Tutorial”― Creating a Racing Game for Unity, Part 3
4
In the following we will look at all those functions. We are not going to explain each line of code,
but we are providing an entry point and going through everything essential that takes place from
the setup to what happens each frame. So without further ado, let us start at the beginning.
Which are the most important things?
Working inside Unity is easy in so many ways, because of stuff like the editor, the drag and drop
workfl ow and all the built in components. Setting up the Car is half-way there - Unity takes care of
importing the model, we get collision, rendering and physics setup for us with just a few clicks to
add the Components.
Inside our script, we are mainly working at manipulating these Components. You will of course
stumble upon a lot of calculations that we use to determine what happens to the car. This is an
unavoidable part of doing real games: You have to setup some logic through for example scripting
when you want to do more than just the basics. But these calculations are just that: Calculations to
get the right values to feed to our Components.
If you feel that the code is overwhelming and don’t know where to start, one approach could be to
focus on the following items, and consider most of what else is going on as something that affects
and supports these items:
The • Rigidbody
The • Wheel Colliders
The Calculations that we do and the order that we do them in.•
u
n
i
ty
“The Car Tutorial”― Creating a Racing Game for Unity, Part 3
5
Think of it like this:
By adding the rigidbody to our car model we have a way of controlling it in a physical way. We •
do that by calculating the forces that drive it forwards and the forces that slows it down.
By adding the Wheel Colliders we get control over where the Car meets the road.•
Start() - the Setup
This is where we do the initialization needed for the car. The Start() function is executed only once,
in the beginning of the script, before the Update functions. Therefore Start() is often used to set
up the initial prerequisites in the code. The fi rst function we visit is:
SetupWheelColliders()
We have four wheels attached to our car, and we have put them into the FrontWheels and Rear-
Wheels arrays from the Inspector. In this function we create the actual colliders, making the wheels
interact with the surface below the car. We start out in the function by visiting SetupWheelFric-
tionCurve().
- 1
- 2
- 3
前往页