Cocos2d,使用CCParallaxNode时奇怪的位置偏移

时间:2012-02-13 12:03:53

标签: iphone ios cocos2d-iphone

我正在使用cocos2d for iOS。不知道我在这里做错了什么,或者CCParallaxNode做了一些我不明白的奇怪事情。

我正试图在我的游戏背景中创建几层视差滚动,此刻我只是将一层添加到视差节点,直到我能够找出出错的地方。当游戏加载图层时,它总是向下偏移并向左移动大约30%的图像大小。我已经上传了一张图片,展示了http://oi42.tinypic.com/29dz1av.jpg的位置差异。

这是我的代码:

background = [CCParallaxNode node];
background.anchorPoint = ccp(0,0);
background.position = ccp(0,0);
[self addChild: background];

background_image = [CCSprite spriteWithFile: @"layer01.png"
                                      rect: CGRectMake(0, 0, 100, 100)];
background_image.anchorPoint = ccp(0,0);
background_image.position = ccp(0,0);

[background addChild: background_image z:0 parallaxRatio: ccp(0,0) positionOffset:ccp(0,0)];

cocos2d图标与视差节点连接在同一层,它的位置和锚点设置为0,0因此图标的左下角应与蓝色背景图像的左下角位于同一位置

我已经使用基本精灵代替视差节点对此进行了测试,所有内容都按照它应该排列,因此它不是图像本身。

任何有关此的帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

  1. 确保背景图片尺寸为480x320。

  2. 你为什么写CGRectMake(0, 0, 100, 100)?为什么100和100?你限制了你的'CGRect',这可能是错的......

答案 1 :(得分:0)

首先,我不建议您设置视差节点&它的孩子的锚点和直接定位因为它会导致一些意想不到的结果。您应该将视差节点添加到图层作为其子节点,并设置图层的锚点&放置视差的位置。

其次,CCParallaxNode还提供positionOffset,您可以先将视频置于视差中。如果您想要对齐多个图片层的视图中心,这可能会有所帮助。

所以我认为你应该做这样的事情(因为我使用的是cocos2d-x,我不确定它是否正确使用obj-C):

layer = [[CCLayer alloc]init];
background = [CCParallaxNode node];
[layer addChild: background];
[self addChild: layer];

然后你只需在background中添加图片精灵,然后设置图层的位置&锚点。

希望它可以提供帮助。