Hi bszaronos,
When I first started using agk I thought that turning on sprite physics would be the easiest way to control characters (because you see results on the run screen instantly). When I ran into problems I couldn't solve I did some reading, asked on the forum, and on steam. After talking to some experienced programmers who were nice enough to help me, I found their advice true. That advice was: For most situations its easier to manipulate your character without physics, or to create your own simple physics elements.
On that note, jhanson, I have thought of another way to center your character without using the impulse.
If getrawkeystate(upkey) = 1
//the next line calls for the player on the right side of the ladder but within 32 pixels of the ladder
If getspritexbyoffset(player) - getspritexbyoffset(ladder) < 32 and getspritexbyoffset(player) - getspritexbyoffset(ladder) > 0
Setspritex(player, getspritex(player) - 1) //moves players slowly to the left towards the ladder
Endif
//this next line calls for the player to be left of the ladder but within 32 pixels
If getspritexbyoffset(ladder) - getspritexbyoffset(player) < 32 and getspritexbyoffset(ladder) - getspritexbyoffset(player) >0
Setspritex(player, getspritex(player) + 1) //moves player to the right slowly towards the ladder
Endif
If getspritey(player) < getspritey(ladder) + getspriteheight(player) // if the player is below the top of the ladder
Setspritey(player, getspritey(player) - 1) //moves the player up
Endif
Endif
//the -1 and +1 values can be increased to increase movement speed
// the only problem with mixing setsprite and impulse
//commands is they can appear choppy on the screen.
If you have multiple floors with ladders you will need to add a check so your player doesnt levitate when below a floor with a ladder