Unity VideoPlayer:缺少倒带方法

时间:2019-01-17 10:46:56

标签: unity3d

这个想法是拍摄一个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 );

    }
}

这些是系统规格:

System specs

我们如何嵌入向后走动?

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);

也很懒!

1 个答案:

答案 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;
}