Zach Morgan > Collision-2D-0.07 > Collision::2D::Collision

Download:
Collision-2D-0.07.tar.gz

Dependencies

Annotate this POD

CPAN RT

Open  1
View/Report Bugs
Source  

NAME ^

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

DESCRIPTION ^

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: