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 GarrickWinter · Dec 21, 2013 at 09:26 PM · collisiontriggerdestroy

Can't call Destroy() on two objects

So I have two objects and, when they collide under certain circumstances, I want them to destroy themselves and create a third object in their place. Here is my collision function:

 void OnTriggerEnter2D(Collider2D other)
 {
     if (other.name.StartsWith("Self") == true &&
         other.transform.position != transform.position)
     {
         GameObject OtherSelf = other.gameObject;

         if (OtherSelf.GetComponent<Character>().m_IsPlayer)
         {
             float PlayerSpeed = OtherSelf.GetComponent<Player>().GetSpeed();

             Vector2 FlightDir = new Vector2(transform.position.x, transform.position.y) - 
                                 new Vector2(other.transform.position.x, other.transform.position.y);
             
             bool DidFlee = gameObject.GetComponent<AIScript>().NoticeApproach(PlayerSpeed, FlightDir, 0.5f);

             if (DidFlee == false)
             {
                 GameObject NewCouple = Instantiate(m_CouplePrefab, new Vector3(0, 0, 0), Quaternion.identity) as GameObject;
                 Debug.Log(OtherSelf);

                 Destroy(OtherSelf);
                 Destroy(gameObject);
             }
         }
     }
 }

Unfortunately, this doesn't work as expected. When I run the above code and the collision takes place, only gameObject is destroyed - OtherSelf is left intact. If I comment out Destroy(gameObject), however, OtherSelf does get destroyed. Furthermore, if I comment out Destroy(OtherSelf), gameObject is destroyed and OtherSelf is not, as expected.

Admittedly, both objects will be running this collision function, but I don't know Unity well enough to know if that would be a problem. Would it?

If not, what might be causing OtherSelf to stick around after the Destroy function is called unless gameObject is left alive?

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

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

18 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

Related Questions

Why won't the collision work? 3 Answers

All enemies destroyed when only one gets hit. 1 Answer

Putting an object somewhere to destroy something else 1 Answer

On Click, destroy object and any colliding object with the same tag. 6 Answers

OnTriggerEnter is not running! Need help with collision. 2 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