         nearestHit = hit
 
     nearestHit
+
+  # TODO Allow specification of collision type (i.e. circular)
+  objectsUnderPoint: (point, selector="") ->
+    bounds = {
+      x: point.x
+      y: point.y
+      width: 0
+      height: 0
+    }
+
+    self.find(selector).select (object) ->
+      object.collides(bounds)

  @param [sourceObject] An object to exclude from the results.
  @returns {Boolean} true if the bounds object collides with any of the game objects, false otherwise.
  ###
  collides: (bounds, sourceObject) ->
    self.objects().inject false, (collided, object) ->
      collided || (object.solid() && (object != sourceObject) && object.collides(bounds))

  ###*
  Detects collisions between a bounds and the game objects. 
  Returns an array of objects colliding with the bounds provided.

  @name collidesWith

  @param [sourceObject] An object to exclude from the results.
  @returns {Array} An array of objects that collide with the given bounds.
  ###
  collidesWith: (bounds, sourceObject, selector=".solid") ->
    self.find(selector).select (object) ->
      object != sourceObject and object.collides(bounds)

  ###*
  Detects collisions between a ray and the game objects.
