def METHOD_NAME(self):
    # Get from/to points from mouse click
    pMouse = base.mouseWatcherNode.get_mouse()
    pFrom = LPoint3()
    pTo = LPoint3()
    base.camLens.extrude(pMouse, pFrom, pTo)
    pFrom = render.get_relative_point(base.cam, pFrom)
    pTo = render.get_relative_point(base.cam, pTo)
    # Calculate initial velocity
    v = pTo - pFrom
    v.normalize()
    v *= 100.0
    # Create bullet
    shape = BulletSphereShape(0.3)
    body = BulletRigidBodyNode('Bullet')
    bodyNP = self.worldNP.attach_new_node(body)
    bodyNP.node().add_shape(shape)
    bodyNP.node().set_mass(1.0)
    bodyNP.node().set_linear_velocity(v)
    bodyNP.node().set_ccd_motion_threshold(1e-7);
    bodyNP.node().set_ccd_swept_sphere_radius(0.50);
    bodyNP.set_collide_mask(BitMask32.all_on())
    bodyNP.set_pos(pFrom)
    visNP = loader.load_model('models/ball.egg')
    visNP.set_scale(0.8)
    visNP.reparent_to(bodyNP)
    self.world.attach(bodyNP.node())
    # Remove the bullet again after 2 seconds
    taskMgr.do_method_later(2, self.do_remove, 'doRemove',
        extraArgs=[bodyNP], appendTask=True)