Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 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 /
  • Help Room /
avatar image
0
Question by jwulf · Jan 03, 2017 at 05:52 PM · 2dgameobjecttransformdestroyspriterenderer

Why does destroying a gameObject influence its former children?

For context, in a 2D-Game, I have a type of skeleton-enemy consisting of multiple bones. When the enemy is killed, I want the bones to scatter around and drop on the floor. My method on the enemy called looks like this:

 public override void OnDie() {
     foreach (SkeletonBone bone in bones) {
         bone.Init ();
     }
     StartCoroutine(DestroyMe());
 }
 
 IEnumerator DestroyMe() {
     yield return new WaitForEndOfFrame ();
     Destroy(gameObject);
 }

And the Init-Method of the SkeletonBone-Class is

 public void Init() {
     transform.parent = null;
     Rigidbody2D rb = gameObject.AddComponent<Rigidbody2D> ();
     gameObject.layer = LayerMask.NameToLayer ("Bones");
 
     rb.AddForce (new Vector2 (
         Random.Range (-1, 1),
         Random.Range (-1, 1)), ForceMode2D.Impulse);
     rb.AddTorque (Random.Range (-3, 3));
 
     boneCollider.enabled = true;
 }

(where boneCollider is a collider on each bone, which is previously disabled because initially, the enemy only has one large collider for hit-detection.)

Each of the bones has a SpriteRenderer and the problem I have is the following: In the frame, the Skeleton-gameObject gets destroyed, all these SpriteRenderers are disabled. They are not destroyed, of course, since their transform's parent has been set to null, so only the "main" enemy gameObject is destroyed. That works fine. But why does destroying the gameObject have any effect to other gameObjects which do not have anything to do (anymore) with the destroyed one? I checked what happens if I do not destroy the enemy-object (i.e. removing the Line

StartCoroutine(DestroyMe)
) - the bones stay visible. But I don't want any "dead" objects hanging around in the hierarchy, so what can I do / what am I missing?

For completeness: No errors are shown at runtime when I kill an enemy and the methods above gets called.

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 jwulf · Jan 03, 2017 at 06:30 PM

For now, I found at least a solution (adding it here in case someone has the same problem): Enabling the bones' SpriteRenderers in the LateUpdate()-Cycle after the Init() will cause the sprites to remain visible.

However, that is not quite an explanation for the behavior described above...

Comment
Add comment · 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

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

140 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 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 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 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 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 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 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

If you want to destroy the game object, please call 'Destroy' on the game object instead. 1 Answer

Canon Ball shooting with Instiate 1 Answer

how to gameobject timed destroy with effect 0 Answers

Return Object to Original Position after it's Disabled 1 Answer

Meteorite Fall [English/German] Meteoritenschauer 0 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