Beispiel #1
0
    //remember for cylinder, width (y - scale) is half of real

    public void Init(Vector3 position, float angle)
    {
        //следующее звено
        FixedJoint             fixedjoint   = GetComponent <FixedJoint>();
        GameObject             next         = fixedjoint.connectedBody.gameObject;
        leverhingemanipulator2 nextbehavior = fixedjoint.connectedBody.GetComponent <leverhingemanipulator2>();

        //потребуются звенья
        levermanipulator2            lever            = leverobject.GetComponent <levermanipulator2>();
        rotatingplatformmanipulator2 rotatingplatform = rotatingplatformobject.GetComponent <rotatingplatformmanipulator2>();

        //размещаем следующее звено
        float nexwidth = rotatingplatform.transform.position.z + lever.width / 2 - (transform.position.z + /*mul 2 for cylinder*/ 2 * width / 2);

        next.transform.localScale = new Vector3(nextbehavior.diameter, nexwidth / 2 /*div 2 for cylinder*/, nextbehavior.diameter);
        next.transform.position   = new Vector3(transform.position.x, transform.position.y, transform.position.z + (/*mul 2 for cylinder*/ 2 * width + nexwidth) / 2);

        //якорь шарнира
        fixedjoint.anchor = new Vector3(0.0f, 0.5f, 0.0f);

        //инициализируем следующие звенья
        nextbehavior.Init(position, angle);

        //поворачиваем вокруг вертикальной оси
        transform.RotateAround(position, Vector3.down, angle);
    }
Beispiel #2
0
    //remember for cylinder, width (y - scale) is half of real

    public void Init(Vector3 position, float angle)
    {
        //следующее звено
        FixedJoint        fixedjoint   = GetComponent <FixedJoint>();
        GameObject        next         = fixedjoint.connectedBody.gameObject;
        levermanipulator2 nextbehavior = fixedjoint.connectedBody.GetComponent <levermanipulator2>();

        //размещаем следующее звено
        next.transform.localScale = new Vector3(nextbehavior.width, nextbehavior.length, nextbehavior.width);
        next.transform.position   = new Vector3(transform.position.x, transform.position.y + (diameter + nextbehavior.length) / 2, transform.position.z + /*mul 2 for cylinder*/ 2 * transform.localScale.y / 2 - nextbehavior.width / 2);

        //якорь шарнира
        fixedjoint.anchor = new Vector3(0.0f, 0.5f, 0.0f);

        //инициализируем следующие звенья
        nextbehavior.Init(position, angle);

        //поворачиваем вокруг вертикальной оси
        transform.RotateAround(position, Vector3.down, angle);
    }