Game Development Reference
a 3D context. A character must have a presence in the environment,
and being able to establish volume and weight in an animation
is crucial to believing the character is actually in and part of the
This relates to an animator's ability to bring a character to life. It must
be able to appeal to an audience through physical form, personality,
All but a couple of the preceding principles of animation can be conveyed in
a game environment through the physics system. They are consequences of
physics acting in the real world. We subconsciously see and experience them
every day, albeit not with as much exaggeration as a game, and come to
expect it in the virtual environment.
In the following hands-on sections you will get a chance to see how these
principles can be applied in your own games.
2.6.1 Squash and Stretch
2D Boy's two-dimensional adventure World of Goo features many moving
balls of Goo. Each time Goo accelerates it becomes elongated along the
direction of movement, and it decelerates and squashes when it collides with
another object. Such movement occurs in the real world and is explained by
While game-based physics engines do allow for the creation of
bouncy objects, typically they do not provide real-time squashing
and stretching algorithms for the actual game object. The rigid body
attached to a game object to simulate physics by very definition
remains rigid even though its movement suggests otherwise. In most
cases, it is too processor intensive in 3D environments to squash and
stretch all objects, but just for fun this hands-on session will show you
how to do it in Unity.
Unity Hands On
Squash and Stretch
Step 1. Download Chapter Two/AnimPrinciples.zip from the Web site,
unzip, and open in Unity. In the Project, double-click on squash in the
Scenes folder to open the scene. The warehouse scene from one of the
Unity online resources will be visible.
Step 2. We want to be able to move around inside the warehouse
and need to add a first person controller (FPC). Select Assets > Import
Package from the main menu, and select the Character Controller
package ( Figure 2.35 ).