2010-06-20 24 views
1

我试图在iPhone Cocos2D游戏中同时支持横向和纵向方向,但我无法正确获取坐标。在iPhone上使用Cocos2d支持不同的方向

这是我到目前为止所做的。

我有一个GameWorld图层,我总是保持肖像,不管设备的方向如何。以下代码位于UIDeviceOrientationLandscapeLeft的DeviceRotated事件中。 (“自我”是我的游戏世界层)

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

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

,这样我就不用写每个方向我希望能使用下列在我的Sprite类翻译雪碧坐标不同的代码。

CGPoint spriteLoc = ccp(0,0); 

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

self.position = translatedSpriteLoc; 

但是,这是行不通的。

如果设备处于肖像模式,精灵在左下角,我将设备向左旋转,精灵将出现在右下角。我想让雪碧像风景一样在风景的左下角。

我错过了什么或有没有更好的方法来翻译坐标?

回答

0

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

但是,如果您需要相当方向,您可能需要按照上面显示的内容进行操作,通过使用操作进行旋转来手动定向。

没有更详细,很难说为什么你的方法是行不通的,但我的猜测您看到您描述为的事实,如果你不改变方向造成的精灵定位,纵向左下方是向左旋转时横向右下方,即GL空间中的相同点:(0,0)。您将不得不移动GameWorld图层的“原点”并旋转它。

尝试将全屏图像添加到图层,以查看旋转它时实际发生的情况。这应该有助于缩小你需要做的事情。