【问题标题】:Unity VideoPlayer: Missing Rewind-MethodUnity VideoPlayer:缺少倒带方法
【发布时间】:2020-09-12 18:39:11
【问题描述】:

我们的想法是拍摄 360 度视频,并使用资产商店场景中的“Unity Interactive 360​​ Video Sample”将其映射到天空盒。摄像头在录制时穿过商场。

我们希望视频的观众能够在运行时在 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);

也很迟钝!

【问题讨论】:

    标签: unity3d


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-27
      • 1970-01-01
      • 2021-11-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多