Rotating a character upside down and vice versa
Your code seems to be quite clear to me. The only thing I can offer as a suggestion is as follows:

if (IsNormalPosition)
{
    CharacterTargetAngle = 180;
}
else
{
    CharacterTargetAngle = 0;
}


This is a little more concise.

CharacterTargetAngle = IsNormalPosition ? 180 : 0;