- Home /
Disable all child rigidbodies
Ok, this sounds like it should be simple, but for some reason nothing I try works properly. I want to make all the rigidbodies in a ragdoll kinesmatic at once, which means looping through a lot of transforms. It is finding all the transforms with the scripted object as a root, so that is working, but at the line where it checks for a rigidbody (if(tr.rigidbody)), things start going wrong. On this version of the script, it says "WARNING: Implicit downcast from Object to Transform", but if I change anything to rigidbody or gameObject or anything other than transform there is a "Cannot cast from source type to destination type" error.
Please could someone tell me what I am doing wrong, and if possible a way to disable a ragdoll without doing this at all.
function DisableAll (trp : Transform) {
for(var tr : Transform in trp){
print("name "+tr.name);
DisableAll(tr);
if(tr.rigidbody){
print("rigidbody in object: "+tr.name);
tr.rigidbody.isKinematic=true;
}
}
}
Answer by Xtro · Aug 07, 2013 at 03:43 PM
change this line --- for(var tr : Transform in trp)
to --- for(var Obj : Object in trp)
and use Obj.transform instead of tr in the code block
if this doesn't help do this...
for(var I=0; I<trp.childCount; I++)
{
var tr : Transform = trp.GetChild(I)
// rest of your code
}
It works! I had to use the second one as ""GetComponent" is not a member of Object", but the second one works perfectly. Thank you!
Your answer
![](https://koobas.hobune.stream/wayback/20220613111717im_/https://answers.unity.com/themes/thub/images/avi.jpg)
Follow this Question
Related Questions
Animation State is causing ragdoll to freeze 0 Answers
Access component of parent with multiple children 2 Answers
Collision between rigid body zombie characters. 1 Answer
Make a simple tree 1 Answer