【问题标题】:Supporting different orientations using Cocos2d on iPhone在 iPhone 上使用 Cocos2d 支持不同的方向
【发布时间】:2010-06-20 11:18:59
【问题描述】:

我尝试在我的 iPhone Cocos2D 游戏中同时支持横向和纵向,但我无法正确转换坐标。

这是我目前正在做的事情。

我有一个 GameWorld 层,无论设备方向如何,我始终保持纵向。以下代码位于 UIDeviceOrientationLandscapeLeft 的 DeviceRotated 事件中。 ('self' 是我的 GameWorld 层)

[self runAction:[CCMoveTo actionWithDuration: 0.25f position:ccp(80, 0)]];

[self runAction:[CCRotateTo actionWithDuration:0.25f angle:90]];

所以我不必为每个方向编写不同的代码,我希望在我的 Sprite 类中使用以下代码来转换 Sprite 坐标。

CGPoint spriteLoc = ccp(0,0);

CGPoint translatedSpriteLoc = [self.parent convertToNodeSpace:spriteLoc];

self.position = translatedSpriteLoc;

但是,这不起作用。

如果设备处于纵向模式且精灵位于左下角,并且我将设备向左旋转,则精灵出现在右下角。我希望精灵在横向中位于左下方,就像在纵向中一样。

是我遗漏了什么还是有更好的方法来翻译坐标?

【问题讨论】:

    标签: iphone cocos2d-iphone coordinates


    【解决方案1】:

    好吧,如果您在切换方向时不介意“跳切”,您可以使用 Cocos2d 中内置的方向支持。见this post at the Cocos2d forums

    但是,如果您需要漂亮的方向,您可能必须按照上面显示的内容做一些事情,通过使用动作的旋转手动定位。

    没有更多细节,很难说为什么你的方法不起作用,但我猜测是你看到了你描述的精灵位置,因为如果你不这样做' t改变方向,纵向的左下角是向左旋转时横向的右下角,即它是GL空间中的同一点:(0,0)。您将不得不移动 GameWorld 层的“原点”并旋转它。

    尝试向图层添加全屏图像,以查看旋转图层时实际发生的情况。这应该可以帮助您缩小需要做的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 2013-04-07
      • 2015-11-17
      相关资源
      最近更新 更多