Ejemplo n.º 1
0
    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);
    }
Ejemplo n.º 2
0
    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);
    }