private StickmanPart CreatePart(string partName, StickmanPart parent, float length, float thickness, float mass, int limits, bool twoSides = true, int angle = 0) { StickmanPart part = StickmanPart.Create(partName, length, thickness, mass, twoSides); if (parent == null) { part.transform.parent = base.transform; part.transform.localPosition = Vector3.zero; } else { part.transform.parent = parent.transform; part.transform.localPosition = new Vector3(0f, -parent.Length); HingeJoint joint = part.gameObject.AddComponent <HingeJoint>(); joint.connectedBody = parent.rigidbody; joint.axis = Vector3.forward; joint.useLimits = true; JointLimits limits2 = new JointLimits { max = limits, min = -limits, maxBounce = 0.5f, minBounce = 0.5f }; joint.limits = limits2; joint.useSpring = true; } part.transform.localEulerAngles = new Vector3(0f, 0f, (float)angle); return(part); }
private StickmanPart CreatePart(string partName, StickmanPart parent, float mass, int limits, int angle = 0) { StickmanPart part = StickmanPart.Create(partName, mass, partName); if (parent == null) //spine { part.transform.parent = base.transform; part.transform.localPosition = Vector3.zero; } else { part.transform.parent = parent.transform; part.transform.localPosition = new Vector3(0f, -parent.Length); HingeJoint2D joint = part.gameObject.AddComponent <HingeJoint2D>(); joint.connectedBody = parent.GetComponent <Rigidbody2D>(); joint.useLimits = true; JointAngleLimits2D limits2 = new JointAngleLimits2D { min = -limits / 2f, max = limits / 2f }; joint.limits = limits2; RelativeJoint2D springJoint = part.gameObject.AddComponent <RelativeJoint2D>(); springJoint.connectedBody = parent.GetComponent <Rigidbody2D>(); springJoint.maxForce = 0f; springJoint.maxTorque = GameOptions.maxRelativeTorque; //springJoint.frequency = this._spring; //springJoint.autoConfigureConnectedAnchor = true; //springJoint.dampingRatio = this.Damper; } part.transform.localEulerAngles = new Vector3(0f, 0f, (float)angle); return(part); }