Each cycle, you have your bullet object move the desired distance. Let's say it moves about 1.5 world units per cycle. Always save the coordinates that your bullet was in at the beginning of the cycle. I typically use something like oldx#,oldy#,oldz# but anything will work. Then, cast a ray from the old position to the new position (oldx#,oldy#,oldz# --> newx#,newy#,newz#). That way, it can tell if the bullet hit anything in between its start and end points for that cycle, which means that no matter how fast or slow your bullet object goes, it will always have a precisely timed and correct collision.
Do this EVERY cycle. That means 1 ray per cycle using the bullets position at the beginning and its position at the end of that one cycle.
I would draw a picture, but I think I explained it well enough. And like I said before, casting 1 ray per shot that extends from the gun is called the hitscan method, which means no matter how far away the object is, it will get hit at the same time of firing. This is unrealistic and doesn't allow for slower bullets(say, the plasma rifle in Halo or the silenced round in Killzone PS2). There is a really good explanation of hitscan weapons on Wikipedia if you want more insight. My method is a projectile weapon, meaning the bullet actually "travels", even when it seems instant(like in close range).
Just someone obsessed with making games(this will be updated whenever...)