Unity, Vr, Vive - Контроллеры для воспроизведения / паузы видео?
Я новичок и в настоящее время пытаюсь заставить мои Vive Controllers поставить на паузу / Play Unity. До сих пор я могу видеть свои "руки", и он распознает мои триггеры, и это все, что нужно.
Кто-нибудь знает, как заставить его сделать паузу, когда я нажимаю триггер, а затем начать, когда я нажимаю его снова?
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Valve.VR;
public class Viveinput : MonoBehaviour
{
[SteamVR_DefaultAction("Squeeze")]
public SteamVR_Action_Single squeezeAction;
public bool paused;
void Update () {
if (SteamVR_Input._default.inActions.GrabPinch.GetLastStateUp(SteamVR_Input_Sources.Any))
{
print(" Grab Pinch Up");
}
float triggerValue = squeezeAction.GetAxis(SteamVR_Input_Sources.Any);
if (triggerValue > 00f)
{
print(triggerValue);
}
}
}
Это то, что я использую для соединения между контроллером и Unity.
1 ответ
Решение
Я предполагаю, что ваше видео воспроизводится на VideoPlayer
MonoBehaviour:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using Valve.VR;
public class Viveinput : MonoBehaviour
{
public VideoPlayer video;
[SteamVR_DefaultAction("Squeeze")]
public SteamVR_Action_Single squeezeAction;
private bool _triggered = false;
void Update () {
if (SteamVR_Input._default.inActions.GrabPinch.GetLastStateUp(SteamVR_Input_Sources.Any))
{
print(" Grab Pinch Up");
}
float triggerValue = squeezeAction.GetAxis(SteamVR_Input_Sources.Any);
if (triggerValue > 0f && !_triggered)
{
_triggered = true; // This will prevent the following code to be executed each frames when pressing the trigger.
if(!video.isPlaying) { // You dont need a paused boolean as the videoplayer has a property for that.
video.Play();
} else {
video.Pause();
}
} else {
_triggered = false;
}
}
}
Вам нужно перетащить VideoPlayer в редактор, и оно должно быть.