Player.Character would be nil because it no longer exists, hence it being nil. This happens if the player has not spawned yet/had died. I recommend listening to the Player.CharacterRemoving and the Player.CharacterAdded function to listen for these changes.
Figured out what was wrong. Apparently even a LocalScript will run before the character is spawned in. (I thought this only applied to server-sided Scripts.)
Just had to wait out the spawning with repeat wait() until Player.Character and it was good.