Hi everyone, this is my first post so sorry if I do anything wrong.
I’m making a 2D platformer and I’m working on the character controls. I want the character to always be perpendicular to the platform that they are standing on, however I’m having trouble with the transition between two different angled planes, for example flat ground and a 30 degree ramp.
void OnCollisionStay2D(Collision2D col)
{
if (col.collider.tag == "floor")
{
if(col.collider.transform.position.y < GetComponent<Transform>().position.y - (height / 2))
grounded = true;
characterRotation = col.collider.transform.rotation;
}
The above code detects if the ground is below the character, then sets the character rotation equal to the ground rotation.
void Update(){
GetComponent<Transform>().rotation = Quaternion.Slerp(GetComponent<Transform>().rotation, characterRotation, Time.deltaTime * 10)
}
The above code allows a smooth transition between the character’s current rotation and the rotation of the ground.
When the character is in between two planes, the script has trouble deciding which plane to set the rotation to, and jumps between the two erratically, is there any way to detect if the character is colliding with two seperate planes?
Ideally I’d like the character to transition half way between each plane, but if that’s not possible I’d like the character to be facing upright, i.e. Quaternion.identity
How would I go about doing this? Thanks in advance!