Best way to make a gun?

I know this is a weird question, and I'm not sure if this is the right place to ask. But I don't know where else to go. And if it isn't obvious, I'm pretty new to Unity.

So, I want to make a simple gun. You click, it shoots, things get hit. Here's my question. I made one that when you click, it launches a bullet (rigidbody) at a set speed. The problem is, if I set the speed to be high enough where it moves like a real bullet it, the bullet flies right through other objects without either one detecting a collision. Is there a better way to do it?

You're better off using raycasting than instantiating a bullet. The problem you're encountering is called tunneling. Basically the bullet is so small and fast that it passes through the collider in less than one frame. Since the game only updates every frame, there's a fairly high probability that the collision will be missed.

Also, rendering dozens of bullets will affect performance and it's probably not necessary since you can't see them at high speeds anyway.

If you cast a ray forward on each hit of the trigger, you can use the RaycastHit class to tell what's been hit, where it's been hit and how far it is, then apply damage based on that. You can still have the muzzle flash and sound to give the gun a realistic effect.

I'd save instantiation for things like rockets where you can see it in real time.

Hope that helps.