void HandleGrab(bool value) { // Grab on press down if (value && HeldObject == null && TargetObject != null) { HeldObject = TargetObject; HeldObjectInteractable = HeldObject.GetComponent <Interactable>(); if (HeldObjectInteractable.type == Interactable.InteractableType.Grabable || HeldObjectInteractable.type == Interactable.InteractableType.JointManipulator) { HeldObjectInteractable.Grab(this); CreateJoint(HeldObject); waitingOnFirstRelease = HeldObjectInteractable.StickyGrab; } else if (ClimbScript != null && HeldObjectInteractable.type == Interactable.InteractableType.Climbable) { ClimbScript.AddInfluencer(this); Climbing = true; ResetReference(); } } else if (!value && waitingOnFirstRelease) { waitingOnFirstRelease = false; } // Release on second release else if (!value) { ForceDrop(); } }