private void HandleGrab() { Transform cameraT = Camera.main.transform; Vector3 eyePos = this.transform.position + (Vector3.up * 1.65f); // Approx where the eyes would be // Approx length for ray float rayCastLength = ((cameraT.position - eyePos).magnitude * 1.25f) + interactionDistance; RaycastHit hit; if (Physics.Raycast(cameraT.position, cameraT.forward, out hit, rayCastLength)) { // Return if distance is larger if ((hit.point - eyePos).sqrMagnitude > Mathf.Pow(interactionDistance, 2)) { return; } grabTarget = hit.collider.GetComponentInParent <IGrabbable>(); } if (grabTarget != null) { grabbed = true; grabTarget.SetGrabbed(true); } }