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.
If you are a new user, check out our FAQ for more information.
If you are a moderator, see our Moderator Guidelines page.
We are making improvements to UA, see the list of changes.
For troubleshooting common problems with Unity 5.x Editor (including Win 10).
To help users post good questions and use the site effectively we have posted a user guide. Please check it out.
Answers and Comments
1 Person is following this question.
Convert String to GameObject type Array
How could I convert GameObject to Rigidbody in C#?
Moving a GameObject with a script from another GameObject (Rigidbody)
Cannot convert 'UnityEngine.Collider' to 'UnityEngine.gameObject' using OverlapSphere
Conversion of GameObject with Component to Specific Type