When I find a game Object like this:
If I try to assign it to a variable that is typed as Rigidbody, it fails.
There is a rigidbody component applied to this model yes, and If I use the inspector it all works fine.
I get the following:
BCE0022: Cannot convert
BCE0022: Cannot convert
Note that it works very well within the inspector, but how can I do the same via script? there is a conversion going on somewhere but I fail to find how to do that within a script.
How should I go about it?
Answer by jonas-echterhoff
Aug 19, 2010 at 09:52 AM
A GameObject and a Rigidbody are two entirely different types, so you cannot assign one to the other. As you find out, you have to get the Rigidbody component from the GameObject instead, ie:
joint.connectedBody = GameObject.Find("physics_body").rigidbody;
The reason you can do this in the inspector is that the inspector is smart, and if you drag a GameObject onto a component reference, it will automatically search the GameObject for matching components to assign. As you cannot drag a component itself, this is also needed to have an easy way to assign component references in the editor.
Answer by Jean-Fabre
Aug 18, 2010 at 12:49 PM
Found it after messing around desperately
you actually pass the component reference itself.
something like this:
<joint>.connectedBody = <GameObject>.GetComponent(Rigidbody);
Simple. Maybe it's in the doc somewhere, but I would say it would deserve a bit more explanation or examples on this.
Oddly enough, passing the right value solved other problems that at first seemed unrelated, I was getting errors about the connectedBody function itself, not the fact that the value passed was of the wrong type. see http://answers.unity3d.com/questions/18378/connectedbody-error-when-used-in-script
How could I use this in C#?
Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.
The best place to ask and answer questions about development with Unity.
To help users navigate the site we have posted a site navigation guide.
If you are a new user to Unity Answers, check out our FAQ for more information.
Make sure to check out our Knowledge Base for commonly asked Unity questions.
If you are a moderator, see our Moderator Guidelines page.
We are making improvements to UA, see the list of changes.
Answers and Comments
1 Person is following this question.
Convert String to GameObject type Array
How could I convert GameObject to Rigidbody in C#?
'active' is not a member of 'System.Type'.
Make isKinematic false when touching a Collider?
why my object is sometimes going through walls ?