首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用GamePad修改旋转

使用GamePad修改旋转
EN

Stack Overflow用户
提问于 2014-12-16 13:53:14
回答 3查看 346关注 0票数 0

我想通过游戏手柄修改相机对象的旋转。我的代码可以在编辑器中运行,但不能在iOS上运行。(然而,它看起来像是在工作,但是被VROne代码推回到了第二帧)。

我可以用裂缝解决这个问题,但是还不能用VROne解决这个问题。对于裂缝,我添加了一个“偏移量”的旋转是由GamePad操纵杆改变的。偏移量被计算到最终的旋转中,其中也包括球员的视线方向。

你知道我要修改代码的哪一部分才能在VROne软件开发工具包中正常工作吗?

EN

回答 3

Stack Overflow用户

发布于 2014-12-18 20:11:15

如果要使用自己的GameRotation角度(从游戏手柄),这些值可能会被集成的HeadTracking覆盖。你有没有试过在VROneSDKHead对象中禁用VR头部跟踪脚本?

在调用本机静态库的HeadTrackingIOS类中处理HeadTracking角度。您可以尝试将您的游戏手柄偏移量添加到第43行返回的四元数中。

希望这对我们有所帮助,让我们知道它是否有效!

票数 0
EN

Stack Overflow用户

发布于 2014-12-19 07:26:31

编辑:不要紧,下面的代码可以在编辑器中工作,但在iOS设备上,相机仍然被强制向前移动。我试试另一个答案。

酷--上面的答案可能会起作用。听起来就是我要找的。

然而,根据Unity论坛上的建议,我实现了这个解决方案:首先,我用localPosition 0,0,0使VROne对象成为另一个空游戏对象的子对象。

在旋转时,我旋转父对象,但首先确保父对象与子对象的位置相同,然后子对象localPosition为0,0,0 - -right现在子对象进行物理移动,父对象进行旋转。我不确定是否可以将角色控制器移到父级,或者在SDK中做一些其他时髦的事情,但现在这似乎是可行的。

代码语言:javascript
复制
if (RightStickX.Value != 0)
{
    transform.position                      = childObject.transform.position;
    childObject.transform.localPosition     = Vector3(0,0,0);
    transform.eulerAngles.y += RightStickX.Value * rotationSpeed * Time.deltaTime;
}
票数 0
EN

Stack Overflow用户

发布于 2015-04-21 03:32:01

为了防止这对某人有帮助,我能够用一种简单得多的方法解决它。

VrOneSDK对象是我用游戏面板旋转的对象的子对象。然后在“vrHeadTracking.cs”中我简单地改变了

代码语言:javascript
复制
transform.rotation = Quaternion.Inverse(initialRotation) * rot;

代码语言:javascript
复制
transform.localRotation = Quaternion.Inverse(initialRotation) * rot;

这样头部跟踪是相对于我的父对象的旋转。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27498412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档