我正在使用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因此图标的左下角应与蓝色背景图像的左下角位于同一位置
我已经使用基本精灵代替视差节点对此进行了测试,所有内容都按照它应该排列,因此它不是图像本身。
任何有关此的帮助将不胜感激。
答案 0 :(得分:0)
确保背景图片尺寸为480x320。
你为什么写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
中添加图片精灵,然后设置图层的位置&锚点。
希望它可以提供帮助。