Is there a better way checking when a projectile damages a player instead of using .Touched?

You can use the open source FastCast resource which simulates bullet physics with raycasting.