Create a full circle/chain of hinge joints! Or spheres.

Hello,

I’ve used the following script to create 108ish spheres, which I wanted to make as a full circle. I’ve set the connectedBody to one starting sphere for the sphere 1 and 108, but it still persists to create a straight line. Manipulating the variables during game play doesn’t seem to yield any results.

What would be the solution to this? Use another type of joint? I’m still somewhat new so please go easy on me. :slight_smile: <3

I’ve tried a few things, like changing the transform.position of the end sphere to the start one, but it just makes it go crazy like.

Here is the code so there is some idea of what is going on! If there is no sense yet, think necklace kind of like thing like… thing :slight_smile:

private var arr : GameObject[];
private var number:int = 0;
private var max:int = 109;
private var round:int = 1;
private var i:int;

public var beadPrefab : GameObject;

function Start()
{
    arr = new GameObject[max];

    for (i = 0; i < max; i++)
    {
        var newbead : GameObject = Instantiate (beadPrefab, Vector3(292  , 68, 32 +i*5), Quaternion.identity);      
        newbead.name = "bead" + i;

        if (i == 0) //head bead
        {
        newbead.transform.localScale *= 1.5;
        newbead.name = "bead0head";
        }

        if (i>0)
        {

            if (i == 108)
            {
                newbead.hingeJoint.connectedBody    = arr[0].rigidbody;
                //arr[1].hingeJoint.connectedBody = newbead.rigidbody;
            }
            else
                if (i <= 108)
                    newbead.hingeJoint.connectedBody    = arr[i-1].rigidbody;

        }
        arr[i] = newbead;       
    }
}

function Update()
{
   // move to next bead
}

You need to create them in a circle if you want them to be in a circle. Setting the 108th’s pivot to be the zeroth bead causes insanity because physics wants to snap them together from a huge distance apart. They should eventually calm down, but creating them in a circle to start with will do away with that problem completely.