- Home /
child object collides with an other object and makes the other object child of his father
Chances are you are wondering what kind of pot am i smoking, what color and what hydroponic quality, but its a real problen i stumbled uppon and its a little complex to explain.
here is what i need it to happen:
i got object A, object A has a child object, object B, object B collides wih a third object object C, now through a script attached to object B, it will make object C a child of Object A. the second scenario is that object B has no parent, and it collides with object C, with a script that is attached to object B, object C will become child of Object B. hope you understood that so here is the code i have attached to Object B, wich is what i have prolems with:
public Transform dad;
void OnEnable () {
dad = transform.parent;
}
void KillYourself () {
Destroy(gameObject);
}
void OnCollisionEnter (Collision hit) {
if (dad != null) hit.transform.parent = dad;
if (dad == null)hit.transform.parent = gameObject.transform;
}
looks pretty simple and it will become more comple after i get this problem down
thanks a lot in advanced,
best regards, Object A, Object B, Object C and thenachotech1113.
Hard to follow but typically these can be solved by copious Debug.log statements; put one right after the dad = transform.parent in OnEnable, what does that return when this script is running on Object B with no parent? Add a few more to your OnCollisionEnter to check the expected behaviour.
Also, checking for null can sometimes be tricky- review this and see if it helps
http://answers.unity3d.com/questions/524998/testing-for-null-bug-or-feature.html
Sometimes I find it helps to make sure, especially with 'transform', to use gameObject.transform in all cases. So, dad=gameObject.transform.parent; and hit.gameObject.transform.parent; in your case. If it's possible that your object's parent might change during play, you might want to skip caching the parent as 'dad' and just make your code assign a local variable 'dad' in your OnCollisionEnter handler ins$$anonymous$$d. You can then use the same code, if (dad!=null) { hit.gameObject.transform.parent = dad; } else { hit.gameObject.transform.parent = gameObject.transform; }
Your answer