示例#1
0
        /// <summary>
        /// Release currently grabbed grabbable.
        /// </summary>
        public void Release()
        {
            if (grabbed == null)
            {
                return;
            }

            if (grabbed.Joint != null)
            {
                Destroy(grabbed.Joint);
            }

            var grabbable = grabbed.Grabbable;

            grabbable.Body.isKinematic = false;
            grabbable.grabbedBy        = null;

            onRelease.Invoke(grabbable);

            grabbed = null;
        }
示例#2
0
        private void HandleMovingStart(Grabbable grabbable)
        {
            var otherGrabber = grabbable.grabbedBy;

            if (otherGrabber != null)
            {
                otherGrabber.Release();
            }

            grabbable.grabbedBy        = this;
            grabbable.Body.isKinematic = true;

            grabbed = new GrabbedGrabbable(
                grabbable: grabbable,
                moving: true
                );

            if (IsMove(grabbable, transform.position))
            {
                onMove.Invoke(grabbable);
            }
        }