コード例 #1
0
    private void SVRActionInput()
    {
        switch (vrPlayerGrapType)
        {
        case VRPlayerGrabSearchType.OverlapSphere:
            if (_interaction.GetStateDown(_trackedObjLeftHand.inputSource))
            {
                Collider[] col = Physics.OverlapSphere(_leftHandAction.transform.position,
                                                       0.1f,
                                                       InteractionObjectLayer);

                if (col.Length > 0)
                {
                    _leftHandAction.HoldGrabObject(col[0].gameObject);
                }
            }

            if (_interaction.GetStateDown(_trackedObjRightHand.inputSource))
            {
                Collider[] col = Physics.OverlapSphere(_rightHandAction.transform.position,
                                                       0.3f,
                                                       InteractionObjectLayer);

                if (col.Length > 0)
                {
                    _rightHandAction.HoldGrabObject(col[0].gameObject);
                }
            }

            break;

        case VRPlayerGrabSearchType.RayCast:
            if (_interaction.GetStateDown(_trackedObjLeftHand.inputSource))
            {
                Ray handForwardRay = new Ray(_leftHandAction.transform.position,
                                             _leftHandAction.transform.forward);

                RaycastHit rayInfo;
                if (Physics.Raycast(handForwardRay, out rayInfo, 1f, InteractionObjectLayer))
                {
                    _leftHandAction.HoldGrabObject(rayInfo.collider.gameObject);
                }
            }

            if (_interaction.GetStateDown(_trackedObjRightHand.inputSource))
            {
                Ray handForwardRay = new Ray(_rightHandAction.transform.position,
                                             _rightHandAction.transform.forward);

                RaycastHit rayInfo;
                if (Physics.Raycast(handForwardRay, out rayInfo, 1f, InteractionObjectLayer))
                {
                    _rightHandAction.HoldGrabObject(rayInfo.collider.gameObject);
                }
            }

            break;
        }

        if (_interaction.GetStateUp(_trackedObjLeftHand.inputSource))
        {
            _leftHandAction.ReleaseGrabObject();
        }

        if (_interaction.GetStateUp(_trackedObjRightHand.inputSource))
        {
            _rightHandAction.ReleaseGrabObject();
        }
    }