【发布时间】:2016-04-24 19:08:29
【问题描述】:
所以我正在尝试使用 Unity 5 FPS 控制器做一些不同的事情,并将我从这里 (http://forum.unity3d.com/threads/sharing-gyroscope-camera-script-ios-tested.241825/) 获得的陀螺仪相机脚本附加到 FirstPersonCharacter 相机(在注释掉 FirstPersonController 中所有与 mouselook 相关的代码之后) 。CS)。到目前为止,FirstPersonCharacter 根据手机的动作四处张望,但当玩家开始移动时会出现问题。
玩家(FPSController)和相机(FirstPersonCharacter)的移动是断开的,玩家移动和扫射与FirstPersonCharacter的变换无关。这是因为只有 FirstPersonCharacter 的变换受陀螺控制,而不是 FPSController。
我尝试通过依次向 FirstPersonController.cs 添加控件来进行修复,其中 FPSController 仅沿 y 轴旋转,这有效,但仅适用于父 FPSController。当 FPSController 转动时,它会搞砸 FirstPersonCharacter,导致它在直视时滚动,在向上或向下看时偏航,在向一侧看时俯仰。
我希望改变父母会影响孩子的行为,确实如此,但只是以一种可怕的方式。任何人都有解决此问题的解决方案或想法?
【问题讨论】:
-
从这里看起来像是一个本地/世界旋转问题。您能否提供一些代码并描述您在场景中的层次结构?
-
FirstPersonController.cs 的代码是您从 Unity 的标准资产中获得的未经编辑的副本,除了添加了几个函数以允许转动播放器。至于我的对象的层次结构,FPSController 是 FirstPersonCharacter 的父级,它只沿 y 轴旋转。然而,由于陀螺运动的性质,FirstPersonCharacter 沿每个轴旋转。
-
另外,我忘了提到相机怪异只有当我将上述陀螺仪相机脚本中的
transform.rotation = Input.gyro.attitude;更改为:transform.localRotation = Input.gyro.attitude; -
当使用 transform.rotation 时,相机似乎试图与玩家一起转动,但陀螺仪控件似乎覆盖了它试图做的任何旋转变化,并将其重置为初始旋转.喜欢。当身体转动时,头部一直向下并沿着同一轴线向下看。所以我使用 localRotaton 希望它会考虑父对象的旋转,但这只会让事情变得更糟。