If you mean Firearms, i Recommend using Fastcast Redux for physical bullets.
Using Raycasting is creating a hitscan weapon. This one is instant action and is mostly used for simple games that don’t really focus that much on guns
I’d recommend taking a look at FastCast and PartCache, they do great projectile simulation and performance considerations.
But a more basic way of creating a projectile is, yes, creating a part and sending it off at a speed. You might use LinearVelocity and the Touched (or PartsInBoundBox) event or maybe CFrame and raycasting.
That’s two ways. Before I switched to FastCast I moved parts using CFrame and raycasting in front of and behind the part. It definitely worked but my problem was making a part visible while making it appear to move quickly–moving a part too small a distance makes it visible but it’s slow and moving too large a distance makes it fast enough but it looks more like it’s teleporting than flying through the air.
If you want melee weapons you can try various hitbox systems, I know there’s ClientCast and the Raycast Hitbox. I remember there are some region modules that accurately detect parts within them, I’m talking player-made modules other than Region3 and spacial queries.
I personally use spacial queries because as far as I understand ClientCast and Raycast Hitbox rely on moving parts whereas I do not use those.