basic character movement with some collision detection