Hmm... it's posted in the 2D forum so, taking a wild completely unfounded stab in the dark, I'd say it's 2D. ;)
As for my solution to the problem, it's DON'T USE IMAGESCOLLIDE! Collision with your environment shouldn't use pixel-perfect screen collision because if you draw a bumpy bit of floor you'll probably get stuck in it all the time. You should represent your world in a simpler form in an array of tiles or at most in a huge array/bank (bank for preference!) where you can use individual bits to represent the properties of each pixel.
As for my solution to the problem, it's DON'T USE IMAGESCOLLIDE! Collision with your environment shouldn't use pixel-perfect screen collision because if you draw a bumpy bit of floor you'll probably get stuck in it all the time. You should represent your world in a simpler form in an array of tiles or at most in a huge array/bank (bank for preference!) where you can use individual bits to represent the properties of each pixel.