【问题标题】:Cocos2d, Weird position offset when using CCParallaxNodeCocos2d,使用 CCParallaxNode 时奇怪的位置偏移
【发布时间】:2012-02-13 12:03:53
【问题描述】:

我在 iOS 上使用 cocos2d。不确定我在这里做错了什么,或者 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,因此图标的左下角应该与蓝色背景图像的左下角在同一位置.

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

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

【问题讨论】:

    标签: iphone ios cocos2d-iphone


    【解决方案1】:

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

    其次,CCParallaxNode还提供了一个positionOffset,你可以先把你的图片放在视差中。如果您想对齐几层图片的视图中心,这会有所帮助。

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

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

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

    希望对你有帮助。

    【讨论】:

      【解决方案2】:
      1. 确保背景图片大小为 480x320。

      2. 你为什么写CGRectMake(0, 0, 100, 100)?为什么是 100 和 100 ?您正在限制您的“CGRect”,这可能是错误的..

      【讨论】:

      • 为什么背景图片需要是 480x320?我确实将其设置为 1024 而不是 100,我只是在玩它时将其更改为 100。我不明白为什么这会有所作为?
      • 因为那是 iPhone 的屏幕比例。尝试将其设置为 480x320,然后将 CGRectMake 更改为 (0,0,480,320) 或 (0,0,320,480),看看这是否能解决您的问题。尝试没有错!
      猜你喜欢
      • 1970-01-01
      • 2011-05-23
      • 1970-01-01
      • 2016-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多