- 
As a general rule, if you're going to have 
- 
moving game objects in your game 
- 
you should make sure that they are 
- 
rigidbody objects. 
- 
Rigidbodies are components that allow 
- 
a game object to be effected by physics. 
- 
They allow the object to fall under gravity, 
- 
and have physics properties such as mass, 
- 
drag and velocity. 
- 
When we add a rigidbody component 
- 
to a game object we often then refer to it 
- 
as a rigidbody object. 
- 
A rigidbody component is required for any physics 
- 
based interaction, and the game object 
- 
must also have a collider attached 
- 
in order to interact with other physics objects. 
- 
Without a rigidbody our power cube will 
- 
simply hover in mid air. 
- 
But let's see what happens when we add one. 
- 
Like any other component it can be added 
- 
using the Add Component button at 
- 
at the bottom of the inspector, or from 
- 
the 'Component' top menu. 
- 
You will find it under the Physics section. 
- 
Now our object falls under gravity 
- 
and can be controlled by the physics engine 
- 
and any forces that are applied to it. 
- 
Rigidbodies have numerous options. 
- 
Firstly there are settings to control the mass, 
- 
drag and angular drag of the game object. 
- 
The mass of the object effects how collisions 
- 
are treated with the object. 
- 
Game objects with a higher mass will react 
- 
less when collided with a lower mass 
- 
game object. 
- 
The drag of a game object effects how 
- 
quickly it will slow down without 
- 
other interactions. 
- 
Think of it like air resistance. 
- 
It's used to determine the rate of a loss 
- 
of linear velocity. 
- 
Similarly, angular drag effects how 
- 
quickly the game object will slow it's 
- 
angular velocity, i.e. how 
- 
fast it is rotating. 
- 
So for example if you're adding torque 
- 
to the object to rotate it, 
- 
the angular drag will create resistance 
- 
to this force. The next option is 
- 
whether or not the game object is 
- 
effected by gravity. 
- 
By enabling this checkbox we use gravity. 
- 
Settings for gravity can be seen in the 
- 
Edit - Project Settings - Physics area of Unity. 
- 
As you can see it's a 3 dimensional vector 
- 
which by default has a real world 
- 
value of -9.81. 
- 
Because you can customise it globally here 
- 
you could also create interesting effects 
- 
Such as low gravity for a platformer 
- 
or even setting it to a different axis 
- 
as part of a puzzle game. 
- 
For example, let's add gravity to the 
- 
Z axis by a value of 5. 
- 
And now the power cube is pulled towards 
- 
towards the global Z axis. 
- 
The Is Kinematic setting effects whether 
- 
or not a rigid body will react to physics. 
- 
Ordinarily when a scene begins, all static 
- 
geometry, meaning any non-rigidbody objects 
- 
are checked once by the physics engine 
- 
and not checked again for efficiency. 
- 
However when you move a static object 
- 
the physics engine must re-check all other 
- 
static objects for the sake of accuracy, 
- 
and this can be expensive to performance. 
- 
To avoid this, Kinematic rigidbody objects can be used 
- 
and moved via their transform 
- 
by using the Translate function. 
- 
This means that you can have physics objects 
- 
that effect others but are not effected themselves. 
- 
An obvious example of this would be the 
- 
paddle in a Pong or Breakout style game. 
- 
In this example our rigidbody power cube 
- 
has Use Gravity checked. 
- 
When we press play, the object falls to the ground. 
- 
We also have our round prop samoflange ball 
- 
object, which has a similar component setup. 
- 
If the power cube does not have gravity 
- 
then it will not fall under it, but it will 
- 
be effected by other objects. 
- 
If we don't want it to be effected by other 
- 
objects we can use Is Kinematic. 
- 
And as stated we can also move the object 
- 
via it's transform. So we'll make use of 
- 
this simple script, which uses the 
- 
translate function to move it via it's 
- 
forward direction every frame. 
- 
And as you can see, the object still 
- 
interacts with the others but remains a 
- 
rigidbody, so is constantly informing 
- 
the physics engine of it's location 
- 
and not forcing the physics engine 
- 
to re-evaluate the entire scene. 
- 
The Interpolate and Extrapolate settings 
- 
are there to solve jittering. 
- 
If you experience slight movement of your 
- 
object when moving it via it's rigidbody, 
- 
make use of the interpolate setting in order to 
- 
smooth the transform movement based on the 
- 
previous frame. And the extrapolate setting 
- 
to smooth based on a predicted 
- 
location in the next frame. 
- 
The next setting is for the type of 
- 
collision detection. We have Discrete, 
- 
Continuous and Continuous Dynamic. 
- 
The default is discrete and unless you 
- 
have any problems you should use discrete. 
- 
Continuous is for fast moving objects 
- 
that are interacting with static geometry. 
- 
And continuous dynamic is for fast moving 
- 
objects that are interacting with other 
- 
dynamic objects. 
- 
Finally the constraints section of the 
- 
rigidbody component allow you to 
- 
constrain movement or rotation of the object 
- 
by physics. For example, if you 
- 
had a Tetris style game you might not 
- 
want the cubes of your game to rotate 
- 
as they fell in to place. You could constrain 
- 
this using the rotation constraints here. 
- 
In this example our power cube is 
- 
falling on to the workbench. It's a rigid 
- 
body that has Use Gravity checked. 
- 
And as standard it falls like this. 
- 
If we didn't want it to rotate as it falls 
- 
we can freeze the rotation within the constraints. 
- 
And now when it falls, no rotation.