2

我正在帮助使用 C# 在 Unity3d 中开发游戏。我们正在为 iPad 开发并使用 Unity 的 Apple 插件。我们的游戏是一款 2-D 平台游戏,具有使用设备 (iPad) 旋转的游戏玩法。我们使用物理来进行角色移动。

该游戏主要在 Landscape Right 中进行。我们可以使用Screen.orientation = ScreenOrientation.LandscapeRight等轻松更改设备的方向。我们希望能够将设备从LandscapeLeft和旋转LandscapeRightPortraitPortraitUpsideDown,我们可以做到这一点。

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

快速总结:我们希望我们的游戏默认为横向。当我们旋转到纵向时,我们希望世界随着相机旋转而玩家保持不变。物理与角色的含义联系在一起,一旦世界旋转,她就会跌倒,因为她不再站在地上。目前,当我们旋转 iPad 时,设备的方向会发生变化,但游戏的方向不会改变。我们希望世界旋转,但角色保持不变。它在 Unity3d 中工作,但在使用 Xcode iPad 模拟器时不能正常工作。我们如何做到这一点?

谢谢!

肯尼斯

4

1 回答 1

0

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

首先也是最重要的:忘记 XCode 模拟器!即使您直接在 XCode 上构建而不使用 Unity 或其他任何东西,它也很糟糕。也许仅此一项就已经解决了您的问题。获取 iPad 并在其上进行测试。

此外,您还需要适当的脚本处理随旋转而发生的物理变化行为。我不明白你是否得到了这个,但如果你没有,这可能不是太微不足道。虽然看起来你明白了。

最后,最令人困惑的部分是当您谈论ScreenOrientationandScreen.Orientation时,也许那里有一个错误。当您使用时,Screen.orientation = ScreenOrientation.LandscapeRight您会强制改变实际的屏幕方向(它不是只读的),这应该仅用于测试目的。您甚至可以在其中包含与它相关的所有代码#if UNITY_EDITOR#endif预编译器“标签”。对于设备,您应该只有ScreenOrientation == ScreenOrientation.LandscapeRightonifswitch子句和比较运算符,即双等号 ( ==)。

想不出任何其他可能出错的地方。

于 2012-10-03T12:56:44.263 回答