【问题标题】:Move UI Buttons in a VR application based on Google VR sdk in Unity在 Unity 中基于 Google VR sdk 在 VR 应用程序中移动 UI 按钮
【发布时间】:2017-04-05 17:27:26
【问题描述】:

这是一个简单的 VR 应用程序来查看 360 度照片。我有下一张和上一张照片的 UI 按钮。我想要的是当一个人以 360 度左右的任何角度查看照片时,如果他看到下方,他应该得到那些 UI 按钮。

我尝试使用Quaternion.RotateTowards、Quaternion.Slerp、Quaternion.SlerpUnclamped 使用相机旋转这些 UI 按钮,但结果与我们在类似 VR 应用程序中看到的不同。

我正在使用 GoogleVR sdk。请帮忙。

在屏幕截图中,场景处于播放模式。查看相机的旋转。最初它位于 (0,0,0) 但我在下面观看更新的旋转。你可以看到画布上的圆形蓝色按钮。

我想要的是,当我环顾四周时,这些按钮应该保留在下方。或者换句话说,每当我往下看时,我应该看到这些按钮。和现实一样,我可以四处走动,但每当我看到下面的东西时,我都会看到我的鞋子。https://i.stack.imgur.com/Z1Fvz.jpg 第二张图片: https://i.stack.imgur.com/jLKmp.jpg

【问题讨论】:

  • 提供您想要的示例,最好以屏幕截图的形式。
  • 请在我上传图片并详细说明的地方查看我的答案。
  • SO 不是论坛。删除您的答案并通过编辑将其添加到问题中。

标签: user-interface unity3d google-vr


【解决方案1】:

我认为你的场景中有一个屏幕空间画布。将其更改为世界空间(在画布对象上,将渲染模式更改为世界空间),然后将其放置在相机下方。它会出现在下面。如果您四处移动相机,则需要更新画布以与相机保持一致。该脚本将为您完成:

Transform cameraTransform; // find the camera transform in some way at startup, it depends on your scene setup

void Update() {
    transform.position = cameraTransform.position + Vector3.down * 5; // change 5 to whatever distance you want the canvas to sit from the camera
    transform.rotation = Quaternion.Euler(90 /* face-up */, 0, -cameraTransform.rotation.y /* rotate to match heading of camera */);
}

【讨论】:

  • 我试过了,但还是不行。请看我上传的第二张图片。您可以看到,在四处移动时,蓝色的 UI 按钮并不直。你的意思是Canvas应该是相机的孩子吗?我也试过了,但没有得到所需的输出。感谢您的回答...
  • 你使用我给你的脚本了吗?顺便说一句,如果按钮一直随着她的头旋转,用户将如何将她的头指向按钮?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多