Hello, I am re-writing my collision handling from the ground up. I am running into an issue where my character approaches and contacts a platform from the side and hanging on that surface instead of sliding down.
Maybe I am not approaching this correctly, but my idea is:
void OnCollisionEnter2D(Collision2D collision) => HandleCollisions(collision, CollisionType.Enter); // Line 83
void OnCollisionStay2D(Collision2D collision) => HandleCollisions(collision, CollisionType.Stay);
void OnCollisionExit2D(Collision2D collision) => HandleCollisions(collision, CollisionType.Exit);
void HandleCollisions(Collision2D collision, CollisionType collisionType)
{
Collider2D collider = collision.collider;
// collision.contacts = the same list without normal == Vector2.up
if (collisionType == CollisionType.Exit && collision.GetContacts(collision.contacts) == 0)
{
Airbourne(false);
}
foreach (ContactPoint2D contact in collision.contacts)
{
if (contact.normal != Vector2.up)
{
contact.collider.sharedMaterial.friction = 0;
}
else
{
contact.collider.sharedMaterial.friction = 0.4f; // Line 105
}
}
}