private void SetupJoint() { var currentRotation = transform.localRotation; transform.localRotation = JointStartRotation; Joint = gameObject.AddComponent <ConfigurableJoint>(); Joint.connectedBody = ConnectedBody; Joint.LockLinearMotion(); Joint.LockAngularYMotion(); Joint.LockAngularZMotion(); Joint.axis = Axis.GetVector(); if (LimitRotation) { Joint.LimitAngularXMotion(); Joint.SetAngularXHighLimit(-MinAngle); Joint.SetAngularXLowLimit(-MaxAngle); } else { Joint.angularXMotion = ConfigurableJointMotion.Free; } Joint.secondaryAxis = Joint.axis.OrthogonalVector(); Joint.SetAngularXDrive(Spring, Damper, 10000f); transform.localRotation = currentRotation; }
private void SetupNockJoint(HVRArrow arrow) { _nockJoint = NockRigidbody.gameObject.AddComponent <ConfigurableJoint>(); var axis = Forward; _nockJoint.axis = axis; _nockJoint.secondaryAxis = axis.OrthogonalVector(); _nockJoint.LockYMotion(); _nockJoint.LockZMotion(); _nockJoint.LockLinearMotion(); _nockJoint.LockAllAngularMotion(); _nockJoint.anchor = Vector3.zero; _nockJoint.autoConfigureConnectedAnchor = false; _nockJoint.connectedBody = arrow.Rigidbody; _nockJoint.connectedAnchor = arrow.NotchPointLocal; }