githubEdit

AxisAlignedRectangle

Introduction

The AxisAlignedRectangle is a PositionedObjectarrow-up-right which is used for unrotated bounding box collision. This is preferred over Polygonarrow-up-right collision if Sprites are not rotated due to speed and memory usage considerations. AxisAlignedRectangles share many similarities with the other shape classes (Circlearrow-up-right, Linearrow-up-right, and Polygonarrow-up-right). For general information about shapes, see the ShapeManager wiki entryarrow-up-right. For information on using AxisAlignedRectangles in Glue, see this pagearrow-up-right. AxisAlignedRectangles do not support being filled-in. They can only render as an outline. To render a solid rectangle, look at using Spritesarrow-up-right with the Color ColorOperationarrow-up-right

What does "axis aligned" mean?

The "AxisAligned" part of AxisAlignedRectangle indicates that the sides of the rectangle are "axis aligned". In other words, the top, bottom, left, and right are all parallel to either the X or Y axes. AxisAligned.png AxisAlignedRectangles are always axis aligned for performance reasons. Therefore, if you rotate an AxisAlignedRectangle (set its RotationZ), this will have no impact on the collision behavior or its visible representation. If your game requires rotation, you should use the Polygonarrow-up-right class. Of course, performance will suffer slightly if collision performance is a consideration for your game. For more information on axis alignment and a discussion of axis aligned object rotation and children positions, see this pagearrow-up-right.

AxisAlignedRectangles are PositionedObjectsarrow-up-right

The AxisAlignedRectangle class inherits from PositionedObject. This means that all properties which are available to PositionedObjectsarrow-up-right (excluding rotation) are available to AxisAlignedRectangles. For more information, see the PositionedObject pagearrow-up-right.

Creating an AxisAlignedRectangle

AxisAlignedRectangles are created through the ShapeManager. The following code creates an AxisAlignedRectangle through the ShapeManager and resizes it: Add the following using statement

using FlatRedBall.Math.Geometry;

Create the instance:

// AxisAlignedRectangles added this way are Visible by default and also managed
// by the ShapeManager.
AxisAlignedRectangle rectangle = ShapeManager.AddAxisAlignedRectangle();
rectangle.ScaleX = 5;
rectangle.ScaleY = 7;
SimpleRectangle.png

Relationship with ShapeManager

See ShapeManager wiki entryarrow-up-right.

Move (Solid) Collision

Solid or moving collision can be performed with AxisAlignedRectangles as well as Polygonsarrow-up-right and Circlesarrow-up-right. The following code creates three AxisAlignedRectangles - one controlled by the player, one which can be pushed, and one which is is immovable. Add the following using statements:

Add the following at class scope:

Add the following in Initialize after Initializing FlatRedBall:

Add the following in Update:

SolidCollision.png

Determining Collision Side

For information on determining which side an object has collided on, see this page on LastMoveCollisionRepositionarrow-up-right.

AxisAlignedRectangle Members

Extra Information

Did this article leave any questions unanswered? Post any question in our forumsarrow-up-right for a rapid response.

Last updated

Was this helpful?