I am currently trying to find the best method for making a character collide with a platform. The method will require the ability to have angled platforms, walking on them, and bouncing off of the bottom of them (hitting the characters head on the bottom of a platform). Currently I am using the SAT (separating axis theorem) and my method of a character actually walking on the top works, but has many flaws (going up works just fine, but going down is very etchy).
List of required methods:
-character can walk on platform (meaning it will play the walking animation, so there must be a bool to check for this)
-platforms can be angled
-there will be gravity and jumping and such
-eventually character will need to be able to collide with walls and the sides of platforms, so I'm pretty sure rectangles are a must
-probably other things to account for, just don't know yet

I was wondering if anybody could tell me the best way to do what I am trying to do? I don't care if I have to restart my methodology altogether, I just want this working.

Sorry if my thoughts seem all over the place. My mind is fried from trying to get this working, putting all of my methodology into action, only to find that it doesn't work like it is supposed to.

If anybody has any examples of something like this (remember, platforms must be able to rotate and such).

P.S. This is not necessarily tile based! (I've had people assume that before in my posts)

I saw your other post where you explained some of your problems. It seems like the issue is that when the player walks downhill, the code decides the character is in the air for a split-second and acts appropriately, then in the next frame, the character has moved down to where it is touching it again. There is a simple fix, but it may cause problems in certain situations.

First, make sure that you keep all the states saved for the next update. Most importantly, if the player was on the ground last update, assume that he started on the ground this update. Now, check the axis-aligned rectangles of the platform and character. If the rectangles intersect, and the character was on the ground in the last update, chances are, he is still on the ground. From here, you have two options. The first would be to move the character in the direction they are moving, and then raise or lower them to y-coordinate of the platform at that spot. The other is move the character in the direction of the slope of the platform. This has the benefit of keeping the speed the same no matter what angle it is.

After experimenting with it for a bit, you should find some other checks that need to be done, such as when moving from one platform to the next, but this should work fairly well with what you already have.