<< Chapter < Page | Chapter >> Page > |
The code in Listing 8 is essentially the same as code that I explained in an earlier module so no explanation beyond the embedded comments should benecessary.
The overridden Update method begins in Listing 9 .
Listing 9 . Beginning of the overridden Update method.
protected override void Update(GameTime gameTime) {//Tell all the spiders in the list to move.
for(int cnt = 0;cnt<spiders.Count;cnt++) {
spiders[cnt].Move(gameTime);
}//end for loop//Tell all the ladybugs in the list to move.
for(int cnt = 0;cnt<ladybugs.Count;cnt++) {
ladybugs[cnt].Move(gameTime);
}//end for loop
The code in Listing 9 is essentially the same as code that I have explained in earlier modules, so no further explanation should be necessary.
Listing 10 shows the beginning of a for loop that causes each ladybug Sprite object to test for a collision with the spiders in the list of spiders once during each iteration of the game loop.
If a ladybug detects a collision with a spider, the action described earlier is taken.
Listing 10 . Beginning of a for loop that controls the collision testing.
for(int cnt = 0;cnt<ladybugs.Count;cnt++) {
If a ladybug detects a collision with a spider, the remaining spiders in the list are not tested by that ladybug during that iteration of thegame loop. In other words, if a ladybug's rectangle intersects the rectangles belonging to two or more spiders, only the spider closest to the top of the listwill register a collision.
The code that tests for a collision is shown in Listing 11 .
Listing 11 . Test for a collision.
//Test for a collision between this ladybug and
// all of the spiders in the list of spiders.Sprite target =
ladybugs[cnt].IsCollision(spiders);
if(target != null) {//There was a collision. Cause the spider to
// move 128 pixels to the right.target.Position =
new Vector2(target.Position.X + 128,target.Position.Y);
The first statement in Listing 11 calls the IsCollision method on the current ladybug object, passing a reference to the list of spiders as a parameter. As you learned earlier,this will cause the ladybug object to test each spider in the list for a collision until either a collision is found or the list is exhausted.
When the IsCollision method returns and control moves to the beginning of the if statement, the variable named target will either contain null , (meaning that no collision was detected), or will contain a reference to thespider object involved in a collision.
The body of the if statement shown in Listing 11 is executed if a collision was detected and the target variable does not contain null. In this case, the X component of the spider's position vector isincreased by a value of 128. This will cause the spider to move 128 pixels to the right the next time it is drawn.
Notification Switch
Would you like to follow the 'Xna game studio' conversation and receive update notifications?