search.cpan.org is shutting down
Zach Morgan > Collision-2D-0.07 > Collision::2D::Collision

Collision-2D-0.07.tar.gz

Dependencies

Annotate this POD

 Open 1
View/Report Bugs

# NAME

Collision::2D::Collision - An object representing a collision betwixt 2 entities

# ATTRIBUTES

time

The time of collision. For example, consider a point-circle collision, where the point is moving towards the circle. \$collision->time is the exact moment of collision between the two.

axis

The axis of collision. Basically a vector from one entity to the other. It depends entirely on how they collide.

If the collision involves a vertical or horizontal line, the axis will be 'x' or 'y'. If it's between a point or corner and a circle, it will be an arrayref, of the form [\$x,\$y].

This vector will not be normal (normal means of length 1). Collision::2D::normalize_vec(\$v) is provided for that purpose.

vaxis

Again, the axis of collision. If you call this, it will always return the vector form [\$x,\$y]. If the axis existed as 'x' or 'y', it is translated to [\$x,\$y].

This vector will not be normal (normal means of length 1). Collision::2D::normalize_vec(\$v) is provided for that purpose.

ent1, ent2
` \$collision->ent1`

This is to provide some context for "axis". This is useful because dynamic_collision doesn't preserve the order of your entities. If you would like for the order to be preserved, use the `entity->collide(\$ent2)` method, or use the keep_order parameter in `dynamic_collision`.

# METHODS

bounce_vector
` my \$bouncevec = \$co->bounce_vector (elasticity => .8);`

Assuming that `\$co->ent2` has infinite mass, the `\$co->bounce_vector` is the resulting velocity of `\$co->ent1`. The elasticity parameter is 1 by default.

invert

my \$other_collision = \$self->invert();

This returns the inverse of this collision. That is, the time remains, but ent1 and ent2 are swapped, and the axis is inversed. This does not effect \$self.

syntax highlighting: