private void Start() { joint = GetComponent <Joint>(); jointStateWriter = GetComponent <JointStateWriter>(); jointUrdfDataManager = GetComponent <JointUrdfDataManager>(); SetLimit(); }
private void Start() { jointUrdfDataManager = GetComponent <JointUrdfDataManager>(); if (jointUrdfDataManager.IsRevoluteOrContinuous) { joint = new RevoluteJoint(GetComponent <HingeJoint>()); } else if (jointUrdfDataManager.IsPrismatic) { joint = new PrismaticJoint(GetComponent <ConfigurableJoint>()); } }
public static HingeJoint CreateHingeJoint(this Joint joint, GameObject gameObject, Rigidbody parentRigidbody) { HingeJoint hingeJoint = gameObject.AddComponent <HingeJoint>(); hingeJoint.connectedBody = parentRigidbody; // axis: hingeJoint.axis = (joint.axis != null) ? joint.axis.GetAxis() : joint.axis.GetDefaultAxis(); // origin: hingeJoint.autoConfigureConnectedAnchor = false; hingeJoint.connectedAnchor = joint.GetConnectedAnchor(); // spring, damper & position: if (joint.dynamics != null) { hingeJoint.spring = joint.dynamics.GetJointSpring(); } // limits: if (joint.type == "revolute" && joint.limit != null) { hingeJoint.limits = joint.limit.GetJointLimits(); // large joint limits: if (hingeJoint.limits.min < -180 || hingeJoint.limits.max > 180) { JointLimitsManager jointLimitsManager = gameObject.AddComponent <JointLimitsManager>(); jointLimitsManager.LargeAngleLimitMin = hingeJoint.limits.min; jointLimitsManager.LargeAngleLimitMax = hingeJoint.limits.max; JointLimits jointLimits = hingeJoint.limits; jointLimits.min = -180; jointLimits.max = +180; hingeJoint.limits = jointLimits; } else { hingeJoint.useLimits = true; } } // data: JointUrdfDataManager.AddComponent(gameObject, joint.name, joint.type); return(hingeJoint); }
public static ConfigurableJoint CreatePrismaticJoint(this Joint joint, GameObject gameObject, Rigidbody parentRigidbody) { ConfigurableJoint prismaticJoint = gameObject.AddComponent <ConfigurableJoint>(); prismaticJoint.connectedBody = parentRigidbody; prismaticJoint.axis = (joint.axis != null) ? joint.axis.GetAxis() : joint.axis.GetDefaultAxis(); // degrees of freedom: prismaticJoint.xMotion = ConfigurableJointMotion.Limited; prismaticJoint.yMotion = ConfigurableJointMotion.Locked; prismaticJoint.zMotion = ConfigurableJointMotion.Locked; prismaticJoint.angularXMotion = ConfigurableJointMotion.Locked; prismaticJoint.angularYMotion = ConfigurableJointMotion.Locked; prismaticJoint.angularZMotion = ConfigurableJointMotion.Locked; // origin: prismaticJoint.autoConfigureConnectedAnchor = false; prismaticJoint.connectedAnchor = joint.GetConnectedAnchor(); // spring, damper & max. force: if (joint.dynamics != null) { prismaticJoint.xDrive = joint.dynamics.GetJointDrive(); } // limits: if (joint.limit != null) { prismaticJoint.lowAngularXLimit = joint.limit.GetLowSoftJointLimit(); prismaticJoint.highAngularXLimit = joint.limit.GetHighSoftJointLimit(); // set linear limit prismaticJoint.linearLimit = joint.limit.GetLinearLimit(); } // data: JointUrdfDataManager.AddComponent(gameObject, joint.name, joint.type); return(prismaticJoint); }
private void Start() { joint = GetComponent <UnityEngine.Joint>(); jointUrdfDataManager = GetComponent <JointUrdfDataManager>(); }