I think you may want to use this raycast hitbox for your melee attacks. It works by constantly (and effeciently) raycasting between where a hitbox is and where it was one step ago. This prevents the need to constantly spam hitboxes for them to be accurate to where the sword is.
BasePart.Touched:Connect() is unreliable and buggy. Only ever use it if you need to check when a part is touched, not when it is inside something.