Transition between two angled planes
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!
Answer by Konomira · Oct 11, 2015 at 05:03 PM
Adding a raycast at the center of the character, facing down solved it
RaycastHit2D[] hit;
hit = Physics2D.RaycastAll(GetComponent<Transform>().position, -Vector3.up);
GetComponent<Transform>().rotation = Quaternion.Slerp(GetComponent<Transform>().rotation,hit[1].transform.rotation, Time.deltaTime * 10);
Your answer
Follow this Question
Related Questions
How can i make vertical and horizontal floats not return to 0 1 Answer
Help with weapon rotation top down 2D C# 0 Answers
Freeze rotation X but rotation Z, how can I do this? 0 Answers
2D Sprite issue when rotating towards mouse click location. 2 Answers
After Rotating a Prefab, Transform.Position of children is inaccurate 1 Answer