Roblox currently has pretty bad .Touched detection for really fast moving projectiles, although they’re working on it as we speak. There are a couple good libraries you can use to remedy this temporarily, though:
While it’s advertised as being used for melee, the hitbox method is really good if you’re looking to get something returned if it hits it while your projectile is moving at 1200 studs per second. Very performant as well.
Secondly, if you don’t want to use the Raycast Hitbox library, you could also use RotatedRegion3s, as they’re pretty simple to set up:
I’m not extremely familiar with all of the functions of RotatedRegion3, but my only caution for you if you decide to use this is performance.
As always, you want to limit yourself on doing anything intense unless you absolutely have to - especially if you’re doing hit detection from the server. And creating a large Region3 (or subsets of Region3s to account for rotation?) with multiple FindPartsInRegion3 calls as well as accounting for potential numbers of parts (math.huge is a no-no) in a Region could be dangerous. Especially when it comes to creating it on every Heartbeat of the game.
Both methods account for your ‘player-grazing the part’ scenario. A 5, 5, 5 BasePart shouldn’t be that bad. Good luck on getting things to work on your end!