我正在使用C#帮助在Unity3d中开发游戏。我们正在为iPad开发并使用Unity Apple插件。我们的游戏是一款2D平台游戏,具有使用设备旋转(iPad)的游戏玩法。我们正在使用物理学进行角色运动。
游戏主要在Landscape Right中播放。我们可以使用Screen.orientation = ScreenOrientation.LandscapeRight
等方便地更改设备的方向。我们希望能够将设备从LandscapeLeft
和LandscapeRight
旋转到Portrait
或{ {1}},我们可以做。
当我们在Unity3d中运行我们的场景时,当我们从Landscape旋转到Portrait时,我们的角色会因为我们旋转世界(她正站在什么位置),而她保持相同的方向(物理保持不变),因此导致她秋季。这是我们想要的理想行为。然而,当我们构建Xcode并在iPad模拟器(版本5.1)上运行游戏时,我们旋转设备以便世界旋转,它只是旋转设备,游戏仍然具有相同的方向(风景)。 iPad是纵向的,但游戏仍处于风景中。我们需要在ScreenOrientation以外的设备中设置其他变量吗?我们如何让我们的游戏状态与设备的方向一致?
快速摘要:我们希望我们的游戏默认为横向。当我们旋转到肖像时,我们希望世界随着相机旋转并且玩家保持不变。一旦世界旋转,物理学与人物的意义联系在一起,她因为不再站在地上而堕落。目前,当我们旋转iPad时,设备的方向会发生变化,但游戏的方向不会改变。我们希望世界转向轮换,但角色保持不变。它适用于Unity3d但使用Xcode iPad模拟器无法正常工作。我们怎么做?
谢谢!
午
答案 0 :(得分:0)
非常令人困惑的问题,我必须说。检查方向应该简单明了。
首先:忘记XCode模拟器!即使您直接在XCode上构建而不使用Unity或其他任何东西,它也很糟糕。 也许这一点已经解决了你的问题。获取iPad并对其进行测试。
此外,您需要脚本来处理旋转的物理变化行为。我无法理解你是否得到了这个,但如果你不这样做,这可能不会太微不足道。虽然看起来你得到了它。
最后,最令人困惑的部分是当你谈论ScreenOrientation
和Screen.Orientation
时,也许那里有一个错误。当您使用Screen.orientation = ScreenOrientation.LandscapeRight
时,您强制改变实际的屏幕方向(它不是只读的),这只应用于测试目的。您甚至可以在#if UNITY_EDITOR
和#endif
预编译器'标签'中包含与其相关的所有代码。对于设备,您应该只在ScreenOrientation == ScreenOrientation.LandscapeRight
或if
子句中使用switch
和比较运算符,双等号(==
)。
想不出那里可能出错的其他事情。