Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by boddole · May 05, 2014 at 11:41 PM · collisionrigidbodycolliderprogramming

Trouble with OnCollisionEnter and Exit

Hello everyone, I've got a script that bridges a gap between the Unity physics system and scripted behavior (due to how a piece of the game needs to work) but I'm having a strange problem: after OnCollisionExit is called, it seems that OnCollisionEnter is being called and then OnCollisionExit is also called again.

More Details: Basically, the player is on a column that moves up and down (the player uses physics, but the columns do not). So, when the player jumps up and exits the column, the player inherits the calculated velocity of the column plus their own velocity from their jump.

Sometimes this works just as expected, but sometimes after the player exits the column collider, OnCollisionEnter is called for some reason, then OnCollisionExit is called again, meaning that the player inherits the velocity of the column twice (shooting them off into the air).

I have been unable to figure out why this is happening, so if anyone has an idea, I would love to know that the problem is.

     void OnCollisionEnter (Collision other)
     {
         if (other.collider.tag == "Player")
         {
             Debug.Log ("something has enetered the column: " + other.collider.name);
             other.transform.parent = transform;
         }
     }
     
     
     void OnCollisionExit (Collision other)
     {
         if (other.collider.tag == "Player")
         {
             Debug.Log ("something has exited the column: " + other.collider.name);
 
             other.transform.parent = null;
 
             inheritedVelocity.x = xVel;
             //Debug.Log ("inheritedVelocity X is " + inheritedVelocity.x);
             inheritedVelocity.y = yVel + 1f; // + 5.5f;
             Debug.Log ("inheritedVelocity Y is " + inheritedVelocity.y);
             inheritedVelocity.z = zVel;
             //Debug.Log ("inheritedVelocity Z is " + inheritedVelocity.z);
 
             other.rigidbody.velocity += inheritedVelocity;
             Debug.Log ("player's Y velocity is: " + other.rigidbody.velocity.y);
         }
     }

alt text

event log.png (29.5 kB)
Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by Jeff-Kesselman · May 05, 2014 at 11:43 PM

Its hard to tell just from your output, but my guess is that you have more then one collider, probably on different sub-objects of the model.

Maybe one for the whole player and another for the feet?

Comment
Add comment · Show 1 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image boddole · May 06, 2014 at 12:02 AM 0
Share

Definitely not 2 colliders on the column, I had that same idea that maybe the collider on the player body and player feet were causing it to fire twice, but I turned the feet collider off and it still happens.

I think I just might make some events to deal with the problem at this point.

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

21 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Multiple Cars not working 1 Answer

How to adjust two colliders really close to each other w/o them colliding? 1 Answer

OnCollisionEnter does not work 4 Answers

How to make an arrow to become stuck? 1 Answer

Avoid Player bouncing when colliding with objects 3D 1 Answer


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges