To elaborate (using just upward movement as an example) there are only 3 elements to this movement test. A background object that is a 95x95 grid, 'Wall' which is an active object, and 'Player':
'Player' has 4 Alterable Values.
1 - Tile Size (95)
2 - Pixel Count (0)
3 - Pixel Speed (3)
4 - Direction (0)
There are 4 Groups in the event editor.
Controls:
Direction of 'Player' = 0 + upon pressing the up arrow: Set Direction of 'Player' to 1.
Movement:
Direction of 'Player' = 1 + Pixel Count of 'Player' is below tile size: Add Pixel Speed to Pixel Count. Set Y position of 'Player' to - Pixel Speed of 'Player'.
Stopping:
Direction of 'Player' = greater than 0 + Pixel Count of 'Player' is greater than the tile size: Set Pixel Count to 0. Set Direction to 0.
Direction of 'Player' = 1 + Pixel Count of 'Player' is greater than the tile size: Subtract Tile Size of 'player' from Pixel Count. Set Y position of 'Player to + Pixel Count of 'Player'. Set Pixel Count to 0. Set Direction to 0.
Walls:
Direction of 'Player' = 1 + 'Player' is overlapping 'Wall': Set Y position of 'Player to - Pixel Count of 'Player'. Set Pixel Count to 0. Set Direction to 0.
(obviously the above is repeated for directions 2,3,4 as right, down and up respectively)
Can anybody see any faults in this logic?