- Home /
How to avoid Collisions with seams
I've been searching for an answer to this for a while and have yet to find a solution. I'm sure there is something very simple I am missing.
My player character is simply a Capsule Collider completely physics controlled. When he jumps and hits the ground, OnCollisionEnter(Collision collision) is activated. Inside the OnCollisionEnter event, I alter the associated sprite animation with a JumpEnd animation. This works fine except OnCollisionEnter is being activated when he runs across the seams of my tracks(Box Colliders). I thought Vertex Snapping would eliminate the seams but this is obviously not the case.
Am I doing something wrong regarding handling seams between the boxes I am using for ground? Or is it my code that is the problem?
Here is the OnCollisionEnter code:
//Check for collisions to determine when the player is on the ground public void OnCollisionEnter (Collision collision) { //Calculate angle between the up vector and the collision contact's normal float collisionAngle = Vector3.Angle (collision.contacts[0].normal, Vector3.up); if (collisionAngle < 40.0) { //If the angle difference is small enough, accept collision as hitting the ground onGround = true; //Player is grounded playerRigidbody.drag = onGroundDrag; //Restore original drag value playerAnime = PlayerAnime.JumpEnd2; //Alter Animation }
//From Docs...Prints the two objects colliding
foreach (ContactPoint contact in collision.contacts)
{
print (contact.thisCollider.name + " hit " + contact.otherCollider.name);
Debug.DrawRay (contact.point, contact.normal, Color.white);
}
}``
Thanks for any help.
Answer by Eric5h5 · Jan 10, 2011 at 08:41 PM
It would be a bug if OnCollisionEnter wasn't called, since it's a different object, regardless of whether there are seams or not. You could try something like checking for height differences, so only falling + colliding makes the JumpEnd animation play, and simply moving horizontally doesn't.
Your answer
![](https://koobas.hobune.stream/wayback/20220613094836im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Check if player is on track 1 Answer
Advanced collisions: mesh collision? 0 Answers
Colliding to mesh seams when shouldn't 0 Answers
make a train follow tracks using physics 1 Answer
Raycast collision detection? 1 Answer