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 SergeK · Apr 06, 2013 at 09:02 AM · collisionphysicsoverlapping

How to avoid objects bouncing and overlapping after collision?

Hello, guys!

I'am trying to avoid objects bouncing and overlapping after collision with obstacle. You can see the problem and objects configuration at the following video: http://www.youtube.com/watch?v=MrI0lo0fZ1I

All objects are rigidbodies and dragRigidBody script is used for dragging them. Moveable objects are non-kinematic and obstacles are kinematic.

Is there an easy way to solve this issue?

Thanks in advance, Sergei

Comment
Add comment · Show 3
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 AlucardJay · Apr 06, 2013 at 06:01 PM 0
Share

hmm, after all your bumps I finally watched your video. It actually shows the problem well, and you show the inspector which is great. I would have to load that script and see how it works, and apparently mass is one of the factors that can be affecting the other non-kinematic rigidbodies (as well as imparting velocity by the collision on the other rigidbodies). Have you tried it without using a physics material, or even making your own physics material with no bounciness (create > Physic $$anonymous$$aterial)?

But in the meantime there is another script on the Unity Wiki that claims to be better than the Standard Asset script. Save your scene as a new scene with a different name, then try this script : http://wiki.unity3d.com/index.php?title=DragObject

avatar image SergeK · Apr 06, 2013 at 06:55 PM 0
Share

You are right about the mass factor: it's increase leads to bounce reduce, but it also slows down drag speed, that makes user interaction uncomfortable.

I haven't tried to create new physic material, I'll try it with changing drag script and post results.

Thank's for your advices.

avatar image AlucardJay · Apr 06, 2013 at 08:40 PM 0
Share

I had another couple of thoughts. This is only some untested theories, but maybe you can

  • 1/ tell the other rigidbodies to Sleep :

  • 2/ set the other rigidbodies velocity to zero :

Some Unity scripting References :

  • http://docs.unity3d.com/Documentation/ScriptReference/Rigidbody.Sleep.html

  • http://docs.unity3d.com/Documentation/ScriptReference/Rigidbody-sleepVelocity.html

  • http://docs.unity3d.com/Documentation/ScriptReference/Rigidbody-sleepAngularVelocity.html

  • http://docs.unity3d.com/Documentation/ScriptReference/Rigidbody-velocity.html

here are my ideas in a script form :

 //on collision enter / stay / exit
 function OnCollisionEnter( other : Collision ) 
 {
     // find the other rigidbody
     var rBody : Rigidbody = other.collider.gameObject.GetComponent( Rigidbody );
     
     // check there is a rigidbody
     if ( rBody )
     {
         //Debug.Log( "other has Rigidbody" );
         
         // check if the other rigidbody is$$anonymous$$inematic is false
         if ( !rBody.is$$anonymous$$inematic )
         {
             //Debug.Log( "other Rigidbody is NOT $$anonymous$$inematic" );
             
             // then tell it to sleep
             //rBody.Sleep();
             
             // or tell it that its velocity is now zero
             rBody.velocity = Vector3.zero;
         }
     }
 }
 
 
 //on collision stay
 function OnCollisionStay( other : Collision ) 
 {
     // find the other rigidbody
     var rBody : Rigidbody = other.collider.gameObject.GetComponent( Rigidbody );
     
     // check there is a rigidbody
     if ( rBody )
     {
         //Debug.Log( "other has Rigidbody" );
         
         // check if the other rigidbody is$$anonymous$$inematic is false
         if ( !rBody.is$$anonymous$$inematic )
         {
             //Debug.Log( "other Rigidbody is NOT $$anonymous$$inematic" );
             
             // then tell it to sleep
             rBody.Sleep();
             
             // or tell it that its velocity is now zero
             //rBody.velocity = Vector3.zero;
         }
     }
 }
 
 
 //on collision exit
 function OnCollisionExit( other : Collision ) 
 {
     // find the other rigidbody
     var rBody : Rigidbody = other.collider.gameObject.GetComponent( Rigidbody );
     
     // check there is a rigidbody
     if ( rBody )
     {
         //Debug.Log( "other has Rigidbody" );
         
         // check if the other rigidbody is$$anonymous$$inematic is false
         if ( !rBody.is$$anonymous$$inematic )
         {
             //Debug.Log( "other Rigidbody is NOT $$anonymous$$inematic" );
             
             // then tell it to Wake Up !
             rBody.WakeUp();
         }
     }
 }

0 Replies

· Add your reply
  • Sort: 

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

11 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

Related Questions

Question on Vector3.Reflect() 2 Answers

C# GameObject is not detecting collision with Character Controller 2 Answers

Concave rotation Collision problem 3 Answers

C# Check Physics.Raycast Once 0 Answers

Destroy On Collision 4 Answers


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