Getting character to rotate to follow terraina

I’m making a 2d platformer, and I want to be able to run up a slope and then up the wall. To do this, I am able to find the normal of the ground, and use it to determine which way I should orient the character. My problem comes when trying to rotate the character to this angle. It is a rigidbody being moved by forces. At first, I was able to rotate its transform to the desired angle, but that would cause it to intersect with the wall I am trying to run on. I then tried to rotate its transform using the bottom of the feet as the pivot, but that seems to mess up the characters motion. I then tried to rotate the rigidbody using physics. Setting the angular velocity myself didn’t work right, I would set an angular velocity of, say, -.7, and it would turn to the wrong angle with an angular velocity of 506. It would stabalize at a certain angle, but it would be leaning into the slope, rather than away from it. I tried the rigidbody.MoveRotation, but the angle it ended up with was strange. For instance, moving it to 0 ended up with an angle of -17.74 degrees. This persisted even if I had the character jump, so I am in midair away from any obstacles. If I selected isKinemetic on my rigidbody, then it just rotates to 0.

I feel like this should be simple to accomplish, but every technique I have tried fails to work. What is the proper way to do this?

From what I’m understanding, which without code it’s just guesstimating. But it sounds like the player is rotating with the Proper angle on your ground pieces right? But if you jump, it’s hitting the Wall pieces and then making the player straight 90 degrees or at the angle of anything the ray is hitting?

If so, you can do something like this and it should work.
(Not Tested - but compiled with no errors).

	void Update(){
		RaycastHit2D hit = Physics2D.Raycast (transform.position, -Vector2.up,0.1f);		//0.1f = Distance. Change to what you like, if you want infinity, change to Mathf.infinity.
		if (hit.transform.gameObject.tag == "SomeTag") {
			transform.up = hit.normal;
		}

	}