这个想法是拍摄一个360度视频,并使用资产商店场景中的“ Unity Interactive 360视频样本”将其映射到天空盒。相机在录制时穿过购物中心。
我们希望视频的观众能够在运行时在Unity的VR商场中“向前走”,“向后走”,“站起来”。
为此,我们想使用oculus游戏杆在视频中移动播放器。也就是说,使用Input.GetAxis("Vertical")
中的值在运行时向前和向后滚动当前视频剪辑时间。
有效吗?向前迈进就像一种魅力。
不起作用:向后移动不起作用,因为播放速度不能为负。
这是当前脚本:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Video;
public class OculusInput_VideoControl : MonoBehaviour {
VideoPlayer videoPlayer = null;
// Use this for initialization
void Start () {
videoPlayer = (VideoPlayer)FindObjectOfType(typeof(VideoPlayer));
}
// Update is called once per frame
void Update () {
float joystickPosition_from_minusone_to_one = Input.GetAxis("Vertical");
videoPlayer.playbackSpeed = joystickPosition_from_minusone_to_one;
OVRDebugConsole.print(videoPlayer.playbackSpeed + " ### " + joystickPosition_from_minusone_to_one );
}
}
这些是系统规格:
我们如何嵌入向后走动?
if (joystickPosition_from_minusone_to_one < 0) videoPlayer.time -= (int) Mathf.Abs(joystickPosition_from_minusone_to_one);
很懒!
if (joystickPosition_from_minusone_to_one < 0) videoPlayer.frame -= (int) Mathf.Abs(joystickPosition_from_minusone_to_one * 10);
也很懒!
答案 0 :(得分:0)
Negative playback speed is platform dependant.
如果时间太长,则可能是由于您的平台。
您可以并且应该将要减去的值乘以Time.deltaTime。 它可能会改善您的滞后问题,但可能无法完全解决。
为什么还要将Mathf.Abs转换为int?有特殊原因吗?
向int铸造会舍入您的浮动,这可能是不希望的行为。
尝试以下代码
if (joystickPosition_from_minusone_to_one < 0)
{
videoPlayer.time -= Mathf.Abs(joystickPosition_from_minusone_to_one) * Time.deltaTime;
}