//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); }
//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); }