Game Development Reference
In-Depth Information
14.3.2 Relations Between Game Objects
If we want to establish a certain hierarchy between game objects, we need to identify
which game object is a part of which other game object. In terms of hierarchies, this
means that we need to establish that a game object can have a parent game object .
For the game object itself, it is very useful to know who your parent is. Therefore,
we need to store a GameObject variable that refers to the parent of the game object
as well:
protected GameObject parent;
For example, you can image that there is a object called 'playing field' that contains
all the elements part of the playing field (jewels, row selection object, and so on).
The 'playing field' object can then be considered the parent of these elements. But
not all game objects have a parent. For example, the root object does not have a
parent. How can we indicate that a game object does not have a parent? We need
to set the value of the parent member variable to 'nothing', or in C# programming
terms: null .
parent = null ;
Now that we have added a parent to our game object class, we will have to deal with
a few administrative hassles in order to make sure that the parent-child relationship
between game objects is properly maintained, but we will get back to that later on.
Because of this hierarchy of game objects, there are now a few things that we have
to make decisions about.
14.3.3 Local Versus Global Positions
As we know, each game object has a variable containing its position. Until now,
each game object was directly positioned in the game world. Although this approach
works just fine, it might not be the ideal solution. Consider the playing field game
object. In order to align the playing field to the background sprite, we want to place
it at position ( 85 , 150 ) . However, all the child objects (the jewels in the grid, a sprite
for selecting a different row) will probably also have this same position offset of
( 85 , 150 ) . In fact, we had to apply this offset to all of the items in the grid in the
previous example:
85, 150 + y 85);
Vector2 position = new Vector2(85 + x
Although it is a bit of work to apply that offset to all game objects that are a child
of the playing field object, this is still doable. It becomes more problematic once
the child objects become more complicated and have child objects themselves that
 
Search WWH ::




Custom Search