我正试图在我的iPhone Cocos2D游戏中同时支持横向和纵向方向,但是我无法正确地转换坐标。
这就是我到目前为止所做的事情。
我有一个GameWorld图层,无论设备方向如何,我总是保持纵向。以下代码位于UIDeviceOrientationLandscapeLeft的DeviceRotated事件中。 ('自我'是我的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;
然而,这不起作用。
如果设备处于纵向模式,并且左下角有一个精灵,并且我将设备向左旋转,则精灵会出现在右下方。我希望精灵位于风景的左下方,就像在纵向中一样。
我错过了什么或者有更好的方法来翻译坐标吗?
答案 0 :(得分:0)
好吧,如果你在切换方向时不介意“跳切”,你可以使用Cocos2d中的内置方向支持。请参阅this post at the Cocos2d forums。
但是,如果你需要漂亮的方向,你可能需要按照上面显示的内容做一些事情,通过使用动作的旋转手动定向事物。
如果没有更多细节,很难说为什么你的方法不起作用,但是我的猜测就是你看到了你所描述的精灵定位,因为如果你不这样做的话t改变方向,纵向左下方是向左旋转时的右下方,即GL空间中的相同点:(0,0)。你将不得不移动GameWorld Layer的“原点”以及旋转它。
尝试在图层中添加全屏图像,以查看旋转时实际发生的情况。这应该可以帮助你缩小你需要做的事情。