Beispiel #1
0
    public void Init(Vector3 position, float angle)
    {
        {
            //соединённое звено
            HingeJoint hinge = GetComponents <HingeJoint>()[0];
            GameObject next  = hinge.connectedBody.gameObject;
            leverhinge1manipulator2 nextbehavior = hinge.connectedBody.GetComponent <leverhinge1manipulator2>();

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

            //якорь шарнира
            hinge.anchor = new Vector3(0.0f, -0.5f - nextbehavior.diameter / length / 2, 0.0f);
        }

        //поворачиваем вокруг вертикальной оси
        //именно здесь т.к. эта цепочка звеньев смыкается с другой уже инициализированной цепочкой звеньев
        transform.RotateAround(position, Vector3.down, angle);

        {
            //ещё соединённое звено (из другой цепочки звеньев)
            HingeJoint            hinge        = GetComponents <HingeJoint>()[1];
            GameObject            next         = hinge.connectedBody.gameObject;
            armhinge1manipulator2 nextbehavior = hinge.connectedBody.GetComponent <armhinge1manipulator2>();

            //якорь шарнира
            hinge.anchor = new Vector3(0.0f, 0.5f + nextbehavior.diameter / length / 2, 0.0f);
        }
    }
Beispiel #2
0
    public void Init(Vector3 position, float angle)
    {
        //следующее звено
        HingeJoint            hinge        = GetComponent <HingeJoint>();
        GameObject            next         = hinge.connectedBody.gameObject;
        armhinge1manipulator2 nextbehavior = hinge.connectedBody.GetComponent <armhinge1manipulator2>();

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

        //якорь шарнира
        hinge.anchor = new Vector3(0.0f, -0.5f - nextbehavior.diameter / length / 2, 0.0f);

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

        //поворачиваем вокруг вертикальной оси
        transform.RotateAround(position, Vector3.down, angle);
    }
Beispiel #3
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;
        armmanipulator2 nextbehavior = fixedjoint.connectedBody.GetComponent <armmanipulator2>();

        //потребуются звенья
        wheel1manipulator2    wheel1    = wheel1object.GetComponent <wheel1manipulator2>();
        armhinge1manipulator2 armhinge1 = armhinge1object.GetComponent <armhinge1manipulator2>();

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

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

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

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