Unity3d和iPad的屏幕方向不一致,游戏不受设备旋转的影响



我正在帮助用C#在Unity3d中开发一款游戏。我们正在为iPad开发,并使用Unity苹果插件。我们的游戏是一款二维平台游戏,具有使用设备(iPad)旋转的游戏功能。我们用物理学来描述角色的移动。

游戏主要在风景区右侧进行。使用Screen.orientation = ScreenOrientation.LandscapeRight等,我们可以很容易地更改设备的方向。我们希望能够将设备从LandscapeLeftLandscapeRight旋转到PortraitPortraitUpsideDown,这是我们可以做到的

在Unity3d中运行场景时,当我们从"横向"旋转到"纵向"时,我们的角色会摔倒,因为我们旋转了世界(她站在上面),而她保持在同一方向(物理保持不变),导致她摔倒。这是我们想要的行为。然而,当我们构建到Xcode并在iPad模拟器(5.1版)上运行游戏时,我们旋转设备以使世界旋转,它只是在游戏仍然具有相同方向(横向)的情况下旋转设备。iPad是纵向的,但游戏仍然是横向的。除了ScreenOrientation之外,我们还需要在设备中设置其他变量吗?我们如何使我们的游戏状态与设备的方向一致?

快速总结:我们希望我们的游戏默认为"风景"。当我们旋转到肖像时,我们希望世界在相机和玩家保持不变的情况下旋转。物理学与角色的意义联系在一起——一旦世界旋转,她就会摔倒,因为她不再站在地上。目前,当我们旋转iPad时,设备的方向会改变,但游戏的方向不会改变。我们希望世界在旋转中发生变化,但角色保持不变。它可以在Unity3d中工作,但使用Xcode iPad模拟器无法正常工作。我们该怎么做?

谢谢!

Kenneth

我必须说,这个问题非常令人困惑。检查方向应该简单而直接。

首先:忘记XCode模拟器!即使你直接在XCode上构建而不使用Unity或其他任何东西,它也很糟糕也许这一点就已经解决了你的问题。买一台iPad并在上面测试。

此外,您还需要脚本处理随旋转而变化的物理行为。我不明白你是否明白,但如果你不明白,这可能不会太微不足道。尽管看起来你明白了。

最后,最令人困惑的部分是当你谈论ScreenOrientationScreen.Orientation时,可能有一个错误。当您使用Screen.orientation = ScreenOrientation.LandscapeRight时,您将强制更改实际的屏幕方向(它不是只读的),这应该仅用于测试目的。您甚至可以在#if UNITY_EDITOR#endif预编译器的"标记"中包含与它相关的所有代码。对于设备,您应该只有ScreenOrientation == ScreenOrientation.LandscapeRight,在ifswitch子句中,带有比较运算符双等号(==)。

想不出还有什么事情会出错。

最新更新