void TryGrab() { if (grippedObj != null) { if (Input.GetButtonDown(buttonName)) { grippedObj.transform.parent = transform; grippedObj.GetComponent <Rigidbody>().isKinematic = true; currentGrabbedLocation = grippedObj.transform.position; try { GrabPoint gp = grippedObj.GetComponentInChildren <GrabPoint>(); grippedObj.transform.localPosition = (handMode == 0) ? gp.grabPositionLeft : gp.grabPositionRight; grippedObj.transform.localRotation = Quaternion.Euler((handMode == 0) ? gp.grabRotationLeft : gp.grabRotationRight); gp.grabbed = true; } catch (Exception e) { // Item grabbed does not have a specific grab position } gripped = true; } } }
void Release() { currentlyGrabbing.Release(); cameraRig.Release(); currentlyGrabbing = null; _isHolding = false; }
public void OnTriggerEnter(Collider collider) { if (collider.gameObject.tag == "Grabbable") { GrabPoint grabPoint = collider.GetComponent <GrabPoint>(); if (grabPoint != null) { hoveredHandle = grabPoint; } } }
void Grab_OFF() { //TODO Get a grab buffer working float grabBuffer = 2f; Transform grabPoint = FindObjectOfType <Grab>().transform; Quaternion origRot; try { Transform child = grabPoint.GetChild(0); try { attack = child.GetComponent <SwanAttack>(); move = child.GetComponent <SwanMove>(); swanCollider = child.GetComponent <BoxCollider>(); rb = child.GetComponent <Rigidbody>(); attack.enabled = false; move.enabled = false; swanCollider.enabled = false; rb.velocity = Vector3.zero; } catch (System.Exception) { //todo This wont work with any type that doesnt have the swan scripts on it //Consider changing for more enemy types Debug.LogWarning("ATTACK: " + attack + " : OR MOVE " + move + " : IS NULL!! ARE YOU SURE YOU GRABBED A SWAN?"); throw; } origRot = child.rotation; grabPoint.DetachChildren(); GameEvents.OnEffectMode_OFF(); child.rotation = Quaternion.identity; if (grabPoint.parent.forward.x > child.position.x) { grabBuffer *= -1; } child.rotation = origRot; child.transform.position = new Vector3(child.transform.position.x /*+ grabBuffer*/, 0.77f, 0); StartCoroutine(ResetAttackAndMove()); } catch (System.Exception) { } GrabPoint.SetActive(false); }
private void OnTriggerExit(Collider other) { Debug.Log("Exit: " + other.gameObject.name); VRObject vrObj = other.gameObject.GetComponent <VRObject>(); if (!vrObj) { vrObj = other.gameObject.GetComponentInParent <VRObject>(); } if (vrObj) { VRObjectCollidingList.Remove(vrObj); } GrabPoint grabPoint = other.gameObject.GetComponent <GrabPoint>(); if (grabPoint) { GrabPointCollidingList.Remove(grabPoint); } }
void OnTriggerEnter(Collider collision) { if (!collision.gameObject.tag.Equals("NonGrabable") && isGrabbing == false) { canGrab = true; heldObj = collision.gameObject; gp = heldObj.GetComponent <GrabPoint>(); flashlight = heldObj.GetComponent <Flashlight>(); gun = heldObj.GetComponent <Gun>(); if (gp != null) { Debug.Log("Found Grab Point script"); } if (flashlight != null) { Debug.Log("Found Flashlight script"); } if (gun != null) { Debug.Log("Found Gun script"); } } }
void UpdateGrab(GrabPoint target) { target.UpdateGrab(Vector3.Distance(transform.position, playerJoint.position)); }
void Grab(GrabPoint target) { target.Grab(Vector3.Distance(transform.position, playerJoint.position)); currentlyGrabbing = target; _isHolding = true; }
private void Grip() { if (grabJoint == null) { //We try to grab GrabPoints before trying to grab VRObjects themselves. VRObject objectToGrip = null; GrabPoint grabbedGrabPoint = null; int highestPriority = int.MinValue; foreach (GrabPoint grabPoint in GrabPointCollidingList) { VRObject grabPointParent = grabPoint.GetParentVRObject(); if (grabPointParent.priority + 1 > highestPriority) { objectToGrip = grabPointParent; highestPriority = grabPointParent.priority + 1; grabbedGrabPoint = grabPoint; } } foreach (VRObject vrObj in VRObjectCollidingList) { if (vrObj.priority > highestPriority) { objectToGrip = vrObj; highestPriority = vrObj.priority; grabbedGrabPoint = null; } } if (objectToGrip) { Debug.Log("gripped", this); if (grabbedGrabPoint) { grabAttachPoint.transform.rotation = objectToGrip.transform.rotation; Vector3 grabPointRotationOffset = grabbedGrabPoint.transform.eulerAngles - grabAttachPoint.transform.eulerAngles; grabAttachPoint.transform.eulerAngles += grabPointRotationOffset + grabbedGrabPoint.rotationOffset; grabAttachPoint.transform.position = objectToGrip.transform.position; Vector3 grabPointPositionOffset = grabbedGrabPoint.transform.position - grabAttachPoint.transform.position; grabAttachPoint.transform.position += grabPointPositionOffset + grabbedGrabPoint.postitionOffset; Physics.IgnoreCollision(grabAttachPoint.GetComponent <Collider>(), objectToGrip.GetComponent <Collider>()); } grabJoint = grabAttachPoint.gameObject.AddComponent <FixedJoint>(); grabJoint.enablePreprocessing = false; if (objectToGrip.grabList.Count > 0) { RemoveAngularDrive(); } grabJoint.enableCollision = false; grabJoint.connectedBody = objectToGrip.GetComponent <Rigidbody>(); objectToGrip.Gripped(this); grippedObject = objectToGrip; } } }
void Grab_ON() { GrabPoint.SetActive(true); }