The CollideAgainstClosest method can be used to perform collision between a Line and a TileShapeCollection. The method returns whether a collision has occurred. Also, it marks the closest collision point. Line vs TileShapeCollection closest collision can be used for a variety of gameplay purposes such as:

  • Laser vs. level

  • Grappling hook vs. level

  • Fast-traveling bullet vs level

Other types of shapes usually are checked over the course of multiple frames as a collidable object moves, and these shapes have a fixed size. However, lines can be of infinite size, and often times are checked just once, such as when a bullet is fired.

Code Example - Marking the Closest Point

The following code can be added to a GameScreen to draw a line from the camera's position to the cursor's position. CollideAgainstClosest is used to find the last collision point which is used to draw a circle. This code assumes that your screen (such as GameScreen or Level1) contains a TileShapeCollection named SolidCollision.

// add the following using at the to of your file to access EditorVisuals:
using GlueControl.Editing;

Line line;
void CustomInitialize()
    line = new Line();
    line.Visible = true;


void CustomActivity(bool firstTimeCalled)
        // Must have position at endpoint 1

        var collisionPoint = line.LastCollisionPoint.ToVector3();

        EditorVisuals.Circle(8, collisionPoint);

void CustomDestroy()
    line.Visible = false;

Last updated