void GrabWith(ViveGrip_GripPoint gripPoint) { Rigidbody desiredBody = gripPoint.TouchedObject().GetComponent <Rigidbody>(); desiredBody.gameObject.GetComponent <ViveGrip_Grabbable>().GrabFrom(transform.position); joint = ViveGrip_JointFactory.JointToConnect(jointObject, desiredBody, transform.rotation); }
void CreateConnectionTo(Rigidbody desiredBody) { jointObject = InstantiateJointParent(); desiredBody.gameObject.GetComponent <ViveGrip_Grabbable>().GrabFrom(transform.position); joint = ViveGrip_JointFactory.JointToConnect(jointObject, desiredBody, transform.rotation); Message("ViveGripGrabStart"); }
void CreateConnectionTo(Rigidbody desiredBody) { jointObject = InstantiateJointParent(); Quaternion desiredRotation = OrientationChangeFor(desiredBody.gameObject); Vector3 offset = desiredBody.gameObject.GetComponent <ViveGrip_Grabbable>().anchor; joint = ViveGrip_JointFactory.JointToConnect(jointObject, desiredBody, offset, desiredRotation); }
/*------------------------injects*/ void ViveGripAirGrabStart(ViveGrip_GripPoint gripPoint) { Debug.Log("grabber ViveGripAirGrabStart"); if (gripPoint.airGrabbingTarget != null) { jointObject = InstantiateJointParent(); Rigidbody desiredBody = gripPoint.airGrabbingTarget.GetComponent <Rigidbody>(); gripPoint.airGrabbingTarget.GetComponent <ViveGrip_Grabbable>().GrabFrom(transform.position); joint = ViveGrip_JointFactory.JointToConnect(jointObject, desiredBody, transform.rotation); } }
/// <summary> /// 连接关节 /// </summary> /// <param name="jointObject">可配置关节</param> /// <param name="desiredObject">关节对象</param> /// <param name="offset">偏移</param> /// <param name="desiredRotation">想要旋转的角度</param> /// <returns>可配置关节</returns> public static ConfigurableJoint JointToConnect(GameObject jointObject, Rigidbody desiredObject, Vector3 offset, Quaternion desiredRotation) { ViveGrip_Grabbable grabbable = desiredObject.gameObject.GetComponent <ViveGrip_Grabbable>(); ConfigurableJoint joint = jointObject.AddComponent <ConfigurableJoint>(); ViveGrip_JointFactory.SetLinearDrive(joint, desiredObject.mass); ViveGrip_JointFactory.ConfigureAnchor(joint, offset, grabbable.applyGripRotation); if (grabbable.applyGripRotation) { ViveGrip_JointFactory.SetAngularDrive(joint, desiredObject.mass); } joint.targetRotation = desiredRotation; joint.connectedBody = desiredObject; return(joint); }
public static ConfigurableJoint JointToConnect(GameObject jointObject, Rigidbody desiredObject, Quaternion controllerRotation) { ViveGrip_Grabbable grabbable = desiredObject.gameObject.GetComponent <ViveGrip_Grabbable>(); ConfigurableJoint joint = jointObject.AddComponent <ConfigurableJoint>(); ViveGrip_JointFactory.SetLinearDrive(joint, desiredObject.mass); if (grabbable.anchor.enabled) { ViveGrip_JointFactory.SetAnchor(joint, desiredObject, grabbable.RotatedAnchor()); } if (grabbable.ApplyGripRotation()) { ViveGrip_JointFactory.SetAngularDrive(joint, desiredObject.mass); } if (grabbable.SnapToOrientation()) { ViveGrip_JointFactory.SetTargetRotation(joint, desiredObject, grabbable.rotation.localOrientation, controllerRotation); } joint.connectedBody = desiredObject; return(joint); }