コード例 #1
0
        private void LeftGrab(Selector.ButtonType button, bool grabState)
        {
            if (button != Selector.ButtonType.Grip)
            {
                return;
            }

            initialDistance = Vector3.Distance(selectorLeft.transform.localPosition, selectorRight.transform.localPosition);

            leftGrabbing = grabState;

            if (leftGrabbing || rightGrabbing)
            {
                if (!rightGrabbing)
                {
                    worldSrt.Clear();
                }

                Srt cameraRig = new Srt(transform);

                SetLocalCursor();

                childSrt = cameraRig.Inverse() * worldSrt;
                childSrt = cursorSrt.Inverse() * childSrt;
            }
        }
コード例 #2
0
        void GrabLeft()
        {
            leftGrabbing       = true;
            world_GrabLoc_left = controller_left.transform.position;

            if (rightGrabbing)
            {
                controller.Set((world_GrabLoc_left + world_GrabLoc_right) * 0.5f, Quaternion.identity, Vector3.one);
                world_grab_vec = world_GrabLoc_left - world_GrabLoc_right;
                if (dolly_mode)
                {
                    world_grab_vec.y = 0f;
                }
                world_grab_vec_len = world_grab_vec.magnitude;
            }
            else
            {
                controller.Set(world_GrabLoc_left, controller_left.transform.rotation, Vector3.one);
                if (dolly_mode)
                {
                    controller.localRotation = Quaternion.FromToRotation(controller.localRotation * Vector3.up, Vector3.up) * controller.localRotation;
                }
            }
            // Set world origin as child of controller
            child.Clear();
            TransformXtra.SiblingToChild(child, controller);
        }