示例#1
0
    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();
        }
    }