public void Release(float scale = 0, bool GrabbedStatic = false) { ApplySoap ap = grabbedGO.GetComponent <ApplySoap>(); if (ap != null) { ap.grabbed = false; } if (grabbedGO.GetComponent <Rigidbody2D>() != null) { grabbedGO.GetComponent <Rigidbody2D>().isKinematic = grabbedStatic; grabbedGO.GetComponent <Rigidbody2D>().AddForce(mover.Movement() * scale); } wait = 0; if (triggerCollider != null) { triggerCollider.enabled = true; } if (left) { handLimiter.leftGrabbed = null; } else { handLimiter.rightGrabbed = null; } grabbed = false; hand.grabbing = false; Destroy(rj); if (GrabbedStatic) { mover.ReleasedStatic(); } grabbedGO.GetComponent <Rigidbody2D>().freezeRotation = false; Debug.Log(changeInAngle); grabbedGO.GetComponent <Rigidbody2D>().angularVelocity = changeInAngle * 10f; stillRotates = false; if (dtj != null) { dtj.Destroy(); dtj = null; } // handRB.gameObject.SetActive(false); }
// grab the given object void Grabbed(GameObject grabbable, bool gStatic = false) { grabbed = true; grabbedGO = grabbable; grabbedStatic = gStatic; ApplySoap ap = grabbedGO.GetComponent <ApplySoap>(); if (ap != null) { ap.grabbed = true; } // handRB.gameObject.SetActive(true); if (!grabbedStatic) { previousParent = grabbedGO.transform.parent; storedLocal = handRB.transform.localPosition; storedLayer = grabbable.layer; storedLayerName = LayerMask.LayerToName(grabbable.layer); // Debug.Log(storedLayerName); //handRB.transform.position = grabbedGO.transform.position; grabbable.layer = LayerMask.NameToLayer("Ignore Player"); grabbedGO.GetComponent <Rigidbody2D>().velocity = new Vector2(0, 0); Joint2D[] connectedJoints = grabbedGO.GetComponentsInChildren <Joint2D>(); foreach (Joint2D joint in connectedJoints) { connectedBodies.Add(joint.connectedBody); if (grabbedGO.tag != "GrabbableKeepRotation") { joint.connectedBody.gameObject.layer = LayerMask.NameToLayer("Ignore Player"); } } //Debug.Log("grabbed"); if (grabbedGO.tag != "GrabbableKeepRotation") { rj = grabbedGO.AddComponent <RelativeJoint2D>(); rj.connectedBody = handRB; autoCorrectNextFrame = true; angleOffset = -Extensions.Angle(-transform.up) - grabbedGO.transform.eulerAngles.z; rj.correctionScale = 0.7f; grabbedGO.GetComponent <Rigidbody2D>().freezeRotation = true; } else { TargetJoint2D joint1 = grabbedGO.AddComponent <TargetJoint2D>(); TargetJoint2D joint2 = handRB.gameObject.AddComponent <TargetJoint2D>(); dtj = new DoubleTargetJoint(joint1, joint2, handRB.transform.position); stillRotates = true; //TargetJoint2D tj = gr } changeInAngleTime = Time.time; previouseAngle = grabbedGO.transform.eulerAngles.z; ActivateableObject ao = grabbedGO.GetComponent <ActivateableObject>(); // rj.breakForce = 6000; } else { mover.GrabbedStatic(grabbedGO); } if (left) { handLimiter.leftGrabbed = grabbedGO.transform; } else { handLimiter.rightGrabbed = grabbedGO.transform; } hand.grabbing = true; previouseAngle = grabbedGO.transform.eulerAngles.z; PointGiver pg = grabbedGO.GetComponent <PointGiver>(); if (pg != null) { pg.Caught(); } }