You'd have to establish a collision envelope that stretches out across the entire length of movement during that step.
That is, if your bullet moves 100 units, you want an invisible collision envelope that's 100 units in length along the axis of movement, centered on the bullet itself. Do your collision checking off that envelope rather than the actual bullet itself, and it'll register collisions that otherwise would be missed.
A rotated collision box would do splendidly, as you are allowed to specify the dimensions of the box at creation. In this case, you would specify the box dimensions thusly:
`Pseudocode: Creating movement-compensating collision boxes
`MinX#, MaxX#, MinY#, MaxY#, MinZ#, and MaxZ# are the world
`coordinates for the collision box
`moveStep# is the movement per loop iteration for the bullet object,
`which is named objBullet in this example.
`moveStep# is used to extend the collision box along the Z axis, which
`generally represents the front-to-back of a model.
moveStep# = 100.0
MinX# = object position x(objBullet)-(object size x(objBullet) / 2.0)
MaxX# = object position x(objBullet)+(object size x(objBullet) / 2.0)
MinY# = object position y(objBullet)-(object size y(objBullet) / 2.0)
MaxY# = object position y(objBullet)+(object size y(objBullet) / 2.0)
MinZ# = object position z(objBullet)-moveStep#
MaxZ# = object position z(objBullet)+moveStep#
`now we make the collision box, setting the rotation flag to 1 so
`the collision box will rotate with the object rather than rescaling
`to encompass the volume of the rotated object
make object collision box objBullet, MinX#, MinY#, MinZ#, MaxX#, MaxY#, MaxZ#, 1
The other objects in the environment should ideally use collision boxes as well, if only because it's much faster than the old collision routines.
Subsequently, if you call object hit(objBullet,0) each time you move the bullet, it should return the object number of whatever objBullet collided with.
-Misanthrope