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 post good questions and use the site effectively we have posted a user guide.
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).
Answers and Comments
1 Person is following this question.
How could I convert GameObject to Rigidbody in C#?
Convert String to GameObject type Array
Explain why the y-axis of the GameObject's position is not exactly zero when rigidbody is added to it.
'active' is not a member of 'System.Type'.
OnCollisionEnter getting child instead