If you don’t have any errors and the change of pause.visibile works, I would double check if the player reference is set correctly in the inspector. You could also try print(player.get_path()) in the pause function and check if the path matches the player’s position in your scene tree.
Of course Player is the top node in the player scene, it just wasn’t clear to me that (apparently) you were running this scene isolated (and not as part of some game/level scene).
If it’s only about the can_move variable, I would start by making sure nothing is overwriting its value. I would try adding a setter function with print_stack():
var can_move: bool = true:
set(value):
print_stack()
can_move = value
Then you can see from where this variable is getting changed.