If the battery is low, or connections bad the starter will not spin up fast enough to spin in the drive, if the drive has grease on the screw threads for the pinion it might move too stiff to engage ==try cleaning it, only light oil for lube ---some have a little pin with a small spring to keep it from vibrating down the threads while running ---that can stick, how easy does the pinion turn on the thread??