Ive tried adding IFs in where the SetPlayerDir is being called, and it almost worked: When the key was presse it stopped the character turning, but they only move in the direction they are facing. for e.g. my character is facing UP, and I hold down the "Strafe" key but when I move pressing the LEFT key, the character Still moves UP, in the direction they are facing. I think its because when the character is moved by the code, it directly uses the character's direction to work out the changes in X + Y coodinates. Ill keep trying though. Think im going to have to edit the core of the movement code to get it working. Thanks again for your help though Crypto :)