protected virtual bool ControllerForward() { if (!VRTK_ControllerReference.IsValid(controllerReference)) { return(false); } return(pressEnabled && VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Touchpad, SDK_BaseController.ButtonPressTypes.Press, controllerReference)); }
// Update is called once per frame void Update() { var grabbingObject = grab.GetGrabbedObject(); VRTK_ControllerReference reference = VRTK_ControllerReference.GetControllerReference(gameObject); IsOnSwipeHorizontal = false; IsOnSwipeVertical = false; diffTouchPadX = 0f; diffTouchPadY = 0f; //タッチパッドのスワイプを取得 if (VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Touchpad, SDK_BaseController.ButtonPressTypes.TouchDown, reference)) { touchMarginSumX = 0f; touchMarginSumY = 0f; var prevTouchAxis = VRTK_SDK_Bridge.GetControllerAxis(SDK_BaseController.ButtonTypes.Touchpad, reference); prevTouchPadX = prevTouchAxis.x; prevTouchPadY = prevTouchAxis.y; } if (grabbingObject != null && !Node.scaleConstraint) { if (VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Touchpad, SDK_BaseController.ButtonPressTypes.Touch, reference)) { var nowTouchAxis = VRTK_SDK_Bridge.GetControllerAxis(SDK_BaseController.ButtonTypes.Touchpad, reference); float nowTouchPadX = nowTouchAxis.x; diffTouchPadX = nowTouchPadX - prevTouchPadX; if (touchMarginSumX > TOUCH_MARGIN) //タッチ移動量がマージンを超えたら { IsOnSwipeHorizontal = true; } prevTouchPadX = nowTouchPadX; touchMarginSumX += Mathf.Abs(diffTouchPadX); float nowTouchPadY = nowTouchAxis.y; diffTouchPadY = nowTouchPadY - prevTouchPadY; if (touchMarginSumY > TOUCH_MARGIN) //タッチ移動量がマージンを超えたら { IsOnSwipeVertical = true; } prevTouchPadY = nowTouchPadY; touchMarginSumY += Mathf.Abs(diffTouchPadY); } //左右スワイプでスケール変更 if (IsOnSwipeHorizontal) { Vector3 newScale = (1f + diffTouchPadX) * grabbingObject.transform.localScale; grabbingObject.transform.localScale = newScale; } } }
private bool IsForwardPressed() { if (!VRTK_ControllerReference.IsValid(controllerReference)) { return(false); } if (canPress && VRTK_SDK_Bridge.GetControllerButtonState(cycleButton, SDK_BaseController.ButtonPressTypes.Press, controllerReference)) { return(true); } return(false); }
private bool IsForwardPressed() { if (!VRTK_ControllerReference.IsValid(controllerReference)) { return(false); } if (canPress && VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Trigger, SDK_BaseController.ButtonPressTypes.Press, controllerReference) && VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Grip, SDK_BaseController.ButtonPressTypes.Press, controllerReference) && VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Touchpad, SDK_BaseController.ButtonPressTypes.Press, controllerReference)) { return(true); } return(false); }
public void DoClickLeft() { VRTK_ControllerReference reference = VRTK_ControllerReference.GetControllerReference(controllerScriptAliasObject); if (VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Grip, SDK_BaseController.ButtonPressTypes.Press, reference)) { if (OnClickAndGripLeft != null) { OnClickAndGripLeft.Invoke(); } } else { if (OnClickLeft != null) { OnClickLeft.Invoke(); } } }
// Update is called once per frame void Update() { VRTK_ControllerReference reference = VRTK_ControllerReference.GetControllerReference(gameObject); if (VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Grip, SDK_BaseController.ButtonPressTypes.PressDown, reference)) { } //グリップ押してる else if (VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Grip, SDK_BaseController.ButtonPressTypes.Press, reference)) { //左右スワイプでスケール変更 if (wrapControllerInput.IsOnSwipeHorizontal) { Vector3 newScale = (1f - wrapControllerInput.diffTouchPadX) * rootObject.transform.localScale; ScaleAround(rootObject, transform.position, newScale); } } }
void Update() { VRTK_ControllerReference controllerReference = VRTK_ControllerReference.GetControllerReference(gameObject); //Only continue if the controller reference is valid if (!VRTK_ControllerReference.IsValid(controllerReference)) { return; } Vector2 currentTriggerAxis = VRTK_SDK_Bridge.GetControllerAxis(SDK_BaseController.ButtonTypes.Trigger, controllerReference); Vector2 currentGripAxis = VRTK_SDK_Bridge.GetControllerAxis(SDK_BaseController.ButtonTypes.Grip, controllerReference); Vector2 currentTouchpadAxis = VRTK_SDK_Bridge.GetControllerAxis(SDK_BaseController.ButtonTypes.Touchpad, controllerReference); // Trigger Pressed end if (VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Trigger, SDK_BaseController.ButtonPressTypes.PressUp, controllerReference)) { } }
// Update is called once per frame void Update() { //スワイプ値リセット IsOnSwipeHorizontal = false; IsOnSwipeVertical = false; diffTouchPadX = 0f; diffTouchPadY = 0f; VRTK_ControllerReference reference = VRTK_ControllerReference.GetControllerReference(gameObject); if (headsetType == SDK_BaseHeadset.HeadsetType.Undefined) { headsetType = VRTK_DeviceFinder.GetHeadsetType(); } if (headsetType == SDK_BaseHeadset.HeadsetType.OculusRift) { //Riftでのタッチパッドの移動量取得 var axis = VRTK_SDK_Bridge.GetControllerAxis(SDK_BaseController.ButtonTypes.Touchpad, reference); var absX = Mathf.Abs(axis.x); var absY = Mathf.Abs(axis.y); if (absX > absY) //X軸スワイプ { if (absX > TOUCH_MARGIN) { IsOnSwipeHorizontal = true; diffTouchPadX = (axis.x - TOUCH_MARGIN) * 0.05f * Time.deltaTime * 30f; } } else //Y軸スワイプ { if (absY > TOUCH_MARGIN) { IsOnSwipeVertical = true; diffTouchPadY = (axis.y - TOUCH_MARGIN) * 0.05f * Time.deltaTime * 30f; } } } else //Rift以外の場合 { //Viveでのタッチパッドの移動量取得 if (VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Touchpad, SDK_BaseController.ButtonPressTypes.TouchDown, reference)) { touchMarginSumX = 0f; touchMarginSumY = 0f; prevTouchPadX = VRTK_SDK_Bridge.GetControllerAxis(SDK_BaseController.ButtonTypes.Touchpad, reference).x; prevTouchPadY = VRTK_SDK_Bridge.GetControllerAxis(SDK_BaseController.ButtonTypes.Touchpad, reference).y; } else if (VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Touchpad, SDK_BaseController.ButtonPressTypes.Touch, reference)) { float nowTouchPadX = VRTK_SDK_Bridge.GetControllerAxis(SDK_BaseController.ButtonTypes.Touchpad, reference).x; diffTouchPadX = nowTouchPadX - prevTouchPadX; if (touchMarginSumX > TOUCH_MARGIN) //タッチ移動量がマージンを超えたら { IsOnSwipeHorizontal = true; } prevTouchPadX = nowTouchPadX; touchMarginSumX += Mathf.Abs(diffTouchPadX); float nowTouchPadY = VRTK_SDK_Bridge.GetControllerAxis(SDK_BaseController.ButtonTypes.Touchpad, reference).y; diffTouchPadY = nowTouchPadY - prevTouchPadY; if (touchMarginSumY > TOUCH_MARGIN) //タッチ移動量がマージンを超えたら { IsOnSwipeVertical = true; } prevTouchPadY = nowTouchPadY; touchMarginSumY += Mathf.Abs(diffTouchPadY); } } }
// Update is called once per frame void Update() { VRTK_ControllerReference leftReference = VRTK_ControllerReference.GetControllerReference(leftControllerAlias); VRTK_ControllerReference rightReference = VRTK_ControllerReference.GetControllerReference(rightControllerAlias); bool isPressGrip = false; //左手のグリップ押した if (VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Grip, SDK_BaseController.ButtonPressTypes.Press, leftReference)) { //移動 var diffPosition = rootObjectT.InverseTransformPoint(leftControllerAlias.transform.position) - lastLeftPos; targetPosition = targetPosition - rootObjectT.TransformVector(diffPosition) * moveFactor; isPressGrip = true; } //右手のグリップ押した if (VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Grip, SDK_BaseController.ButtonPressTypes.Press, rightReference)) { //移動 var diffPosition = rootObjectT.InverseTransformPoint(rightControllerAlias.transform.position) - lastRightPos; targetPosition = targetPosition - rootObjectT.TransformVector(diffPosition) * moveFactor; isPressGrip = true; } //移動させる /*if (!VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Touchpad, SDK_BaseController.ButtonPressTypes.Touch, leftReference) && !VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Touchpad, SDK_BaseController.ButtonPressTypes.Touch, rightReference)) * {*/ if (isPressGrip) { rootObjectT.position = Vector3.Lerp(rootObjectT.position, targetPosition, Time.deltaTime * lerpFactor); } else { targetPosition = rootObjectT.position; } //両手のグリップ押してる if (VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Grip, SDK_BaseController.ButtonPressTypes.Press, leftReference) && VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Grip, SDK_BaseController.ButtonPressTypes.Press, rightReference)) { //スケール float lastDistance = Vector3.Distance(lastLeftPos, lastRightPos); Vector3 nowLeftPos = rootObjectT.InverseTransformPoint(leftControllerAlias.transform.position); Vector3 nowRightPos = rootObjectT.InverseTransformPoint(rightControllerAlias.transform.position); float diffScale = lastDistance / Vector3.Distance(nowLeftPos, nowRightPos); //rootObjectT.transform.localScale = rootObjectT.transform.localScale * diffScale; ScaleAround(rootObjectT, (leftControllerAlias.transform.position + rightControllerAlias.transform.position) / 2f, rootObjectT.transform.localScale * (diffScale + 1f) * 0.5f); targetPosition = rootObjectT.position; //回転 Vector2 leftControllerXZPos = new Vector2(leftControllerAlias.transform.position.x, leftControllerAlias.transform.position.z); Vector2 rightControllerXZPos = new Vector2(rightControllerAlias.transform.position.x, rightControllerAlias.transform.position.z); var diffControllerXZPos = leftControllerXZPos - rightControllerXZPos; float rad = Mathf.Atan2(diffControllerXZPos.y, diffControllerXZPos.x); float degree = rad * Mathf.Rad2Deg; if (initialDegree == null) { initialDegree = degree; } var diffDegree = degree - initialDegree; /* * if (diffDegree > 180f) * { diffDegree -= 360f; } * if (diffDegree < -180f) * { * diffDegree += 360f; * }*/ //rootObjectT.Rotate(0f, diffDegree, 0f); rootObjectT.RotateAround((leftControllerAlias.transform.position + rightControllerAlias.transform.position) / 2f, Vector3.up, diffDegree.Value); } else { initialDegree = null; } lastLeftPos = rootObjectT.InverseTransformPoint(leftControllerAlias.transform.position); lastRightPos = rootObjectT.InverseTransformPoint(rightControllerAlias.transform.position); }
// Token: 0x06001E95 RID: 7829 RVA: 0x0009B81C File Offset: 0x00099A1C private bool IsBackPressed() { return(VRTK_ControllerReference.IsValid(this.controllerReference) && (this.canPress && VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Trigger, SDK_BaseController.ButtonPressTypes.Press, this.controllerReference) && VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Grip, SDK_BaseController.ButtonPressTypes.Press, this.controllerReference) && VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.ButtonTwo, SDK_BaseController.ButtonPressTypes.Press, this.controllerReference))); }
// Update is called once per frame void Update() { VRTK_ControllerReference reference = VRTK_ControllerReference.GetControllerReference(gameObject); IsOnSwipeHorizontal = false; IsOnSwipeVertical = false; diffTouchPadX = 0f; diffTouchPadY = 0f; //グリップ押してる if (VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Grip, SDK_BaseController.ButtonPressTypes.Press, reference)) { //タッチパッドのスワイプを取得 if (VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Touchpad, SDK_BaseController.ButtonPressTypes.TouchDown, reference)) { touchMarginSumX = 0f; touchMarginSumY = 0f; var prevTouchAxis = VRTK_SDK_Bridge.GetControllerAxis(SDK_BaseController.ButtonTypes.Touchpad, reference); prevTouchPadX = prevTouchAxis.x; prevTouchPadY = prevTouchAxis.y; } else if (VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Touchpad, SDK_BaseController.ButtonPressTypes.Touch, reference)) { var nowTouchAxis = VRTK_SDK_Bridge.GetControllerAxis(SDK_BaseController.ButtonTypes.Touchpad, reference); float nowTouchPadX = nowTouchAxis.x; diffTouchPadX = nowTouchPadX - prevTouchPadX; if (touchMarginSumX > TOUCH_MARGIN) //タッチ移動量がマージンを超えたら { IsOnSwipeHorizontal = true; } prevTouchPadX = nowTouchPadX; touchMarginSumX += Mathf.Abs(diffTouchPadX); float nowTouchPadY = nowTouchAxis.y; diffTouchPadY = nowTouchPadY - prevTouchPadY; if (touchMarginSumY > TOUCH_MARGIN) //タッチ移動量がマージンを超えたら { IsOnSwipeVertical = true; } prevTouchPadY = nowTouchPadY; touchMarginSumY += Mathf.Abs(diffTouchPadY); } else if (VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Touchpad, SDK_BaseController.ButtonPressTypes.TouchUp, reference)) { targetPosition = rootObject.transform.position; targetRotation = rootObject.transform.rotation; prevPosition = rootObject.transform.InverseTransformPoint(transform.parent.position); prevRotation = Quaternion.Inverse(rootObject.transform.rotation) * transform.parent.rotation; } } if (VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Grip, SDK_BaseController.ButtonPressTypes.PressDown, reference)) { targetPosition = rootObject.transform.position; targetRotation = rootObject.transform.rotation; prevPosition = rootObject.transform.InverseTransformPoint(transform.parent.position); prevRotation = Quaternion.Inverse(rootObject.transform.rotation) * transform.parent.rotation; } //グリップ押してる else if (VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Grip, SDK_BaseController.ButtonPressTypes.Press, reference)) { //移動 var diffPosition = rootObject.transform.InverseTransformPoint(transform.parent.position) - prevPosition; targetPosition = targetPosition - rootObject.transform.TransformVector(diffPosition) * moveFactor; if (!VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Touchpad, SDK_BaseController.ButtonPressTypes.Touch, reference)) { rootObject.transform.position = Vector3.Lerp(rootObject.transform.position, targetPosition, Time.deltaTime * lerpFactor); } prevPosition = rootObject.transform.InverseTransformPoint(transform.parent.position); /* * //回転 * var diffRotation = Quaternion.Inverse(rootObject.transform.rotation) * transform.parent.rotation * Quaternion.Inverse(prevRotation); * var euler = diffRotation.eulerAngles; * diffRotation = Quaternion.Euler(0f, diffRotation.eulerAngles.y * rotateFactor, 0f); * targetRotation = targetRotation * diffRotation; * if (!VRTK_SDK_Bridge.GetControllerButtonState(SDK_BaseController.ButtonTypes.Touchpad, SDK_BaseController.ButtonPressTypes.Touch, reference)) * { * //var lerpQ = Quaternion.Lerp(rootObject.transform.rotation, targetRotation, Time.deltaTime * lerpFactor); * float angle; * Vector3 axis; * diffRotation.ToAngleAxis(out angle, out axis); * rootObject.transform.RotateAround(transform.parent.position, axis, angle); * } * * prevRotation = Quaternion.Inverse(rootObject.transform.rotation) * transform.parent.rotation; */ } //左右スワイプでスケール変更 if (IsOnSwipeHorizontal) { Vector3 newScale = (1f - diffTouchPadX) * rootObject.transform.localScale; ScaleAround(rootObject, transform.position, newScale); } }