使用XCode强制将box2d场景设置为横向

时间:2013-08-28 05:14:32

标签: ios6 box2d-iphone device-orientation

我正在使用BOX2D开发游戏。 plist文件设置为仅支持纵向方向。游戏以纵向模式开始。我使用CCLayer进行子类化。为了切换视图或场景,我使用下面的代码。

[[CCDirector sharedDirector] pushScene:[scene]];

所以我想要的是在加载视图/场景时改变方向。

1st View/Scene -> Portrait Mode
2nd View/Scene -> Landscape Mode
3rd View/Scene -> Portrait Mode

尝试了一些来源,但没有得到很好的帮助。请帮我解决一下这个。任何建议将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:0)

在我看来,您想要将整个场景旋转到90度( - 或+),以实现您的视图的纵向和横向。一个简单的方法就是创建一个非常小的层作为一个枢轴点,将所有视图保存在屏幕的中心。

  • 创建一个非常小的CCLayer,它将充当视口。我们可以调用这个viewportLayer。
  • 将viewportLayer的位置设置为屏幕中心。
  • 将第1,第2和第3个视图场景添加为viewportLayer的子视图。

完成上述操作后,无论何时需要进行纵向或横向模式,您只需将viewportLayer旋转90度( - 或+)。

作为额外的奖励,放大和缩小也成为一个简单的解决方案。要实现缩放,您所要做的就是缩放viewportLayer而不用担心孩子。碰撞的所有计算仍然可以很好地工作,因为这些计算最有可能在子层中完成,因此不受父转换的影响。