Zoto already gave you the answer
If you're using DBP, use the Intersect Objet command. If using DBC, get Sparky's Collision dll. This command will return when a 3d vertex is inbetween two points in 3D space. As the great god of toast said, bullets move so quickly that theres no need to make an object to show them, it will just lag the game up. Instead, you check for intersection with every enemy object using an intersection ray starting from the user's position, and ending at however many units infront of the user you want. If an intersection occurs, the command will return the distance to the object hit, using this information you can first check if the user is clicking, and if so then check if an object is intersecting the user's path of sight using either the Intersect Object command or Sparky's Collision dll. If the return is true, damage/kill/rape the enemy being shot, otherwise dont do anything.
Its much more efficient, easier to implemenet and more practical than creating and maintaining hundreds of bullet objects.
However if you must use 3D objects (perhaps for slow moving things like rockets...or you just dont understand what I said above and are still going to try and use objects instead, then heres what you do)
1. Determine the range of the bullet
2. Determine the Z length of the bullet object
3. Determine the speed the bullet will be moving at
4. Divide the length of the bullet into the range to see how many bullet objects you need.
5. Create a currentBullet variable to store the current bullet objectbeing used.
6. Hide all of the bullet objects
7. If the user clicks the mouse...
8. Position object currentBullet at the user's gun position, and
rotate the object to the gun's rotation
9. Show the bullet object
10. Using a for/next loop (this is outside of the mouseclick check), giving the loop a start value of 1 and an end value of however many bullets you created. In this loop, if for example the loop variable is called i, check if object i is visible, if so it must have been fired in which case move it forward. Also check for collision.
11. If a collision occurs hide the object, this will stop the loop from moving it.
Ofcourse using an array for the bullets would make this a lot simpler, and adding in types would make ti even better. You could get into using things like IF Bullet(1).Fired = 1 THEN Move Forward, etc.
Anyways, Id still highly recommend looking into the previous suggestion with intersect object command.
- RUC'