【问题标题】:Scale CCSprite from bottom right hand corner从右下角缩放 CCSprite
【发布时间】:2013-10-10 07:48:12
【问题描述】:

这就是我在这里尝试做的事情的要点。

我有一组前景精灵,我会随着玩家的移动而永远滚动。我想做的是,当玩家开始通过 Y 轴上的某个点时,缩小这些前景精灵,同时仍然移动它们。

我希望能够在玩家上升时从它们的左下角缩放精灵,并且我已经完成了这项工作,没有任何问题。

真正的问题是,当玩家倒地时,我还想从右下角缩放精灵。现在我认为可以通过在缩放之前将每个精灵的锚点设置为 1,0 来做到这一点,但这似乎不起作用。精灵仍然从它们的左下角缩放。

我在这里错过了什么?

// do logic to identify the scale factor we want

for (CCSprite *sprite in foreground_sprites)
{
    CGPoint old_anchor = sprite.anchorPoint;
    [sprite setAnchorPoint:ccp(1,0)];
    [sprite setScale:scale_factor];
    [sprite setAnchorPoint:old_anchor];
}

【问题讨论】:

  • 你的问题是右下角,描述是左下角。如果左下角则锚点(0,0)和右(0,1)

标签: ios cocos2d-iphone sprite ccsprite


【解决方案1】:

你试过弄乱这个属性吗?

ignoreAnchorPointForPosition(false);

我用的是cocos2d-x,应该有类似的东西

【讨论】:

    【解决方案2】:

    如果我理解正确,您想在玩家的 Y 位置增加时从左下角进行缩放,而在他们下降时使用右下角进行缩放?

    你不能只改变锚点。锚点和位置齐头并进,将精灵定位在屏幕上。因此,如果您使用 (0,0) 的锚点将精灵定位在屏幕上,那么如果您想将它的锚点切换到 (1,0),同时将其保持在屏幕上的相同位置,您需要更新位置。

    CCSprite* sprite = ...;
    sprite.anchorPoint = CGPointZero;
    sprite.position = CGPointZero;
    
    ...
    
    sprite.anchorPoint = CGPointMake(1.0f, 0.0f);
    sprite.position = CGPointMake(sprite.position.x + (sprite.contentSize.width * sprite.scaleX * sprite.anchorPoint.x),
                                  sprite.position.y + (sprite.contentSize.height * sprite.scaleY * sprite.anchorPoint.y));
    

    希望我能正确理解您的问题并能够提供帮助。

    【讨论】:

      猜你喜欢
      • 2015-09-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-09
      • 1970-01-01
      • 2010-11-26
      • 2017-10-23
      • 1970-01-01
      相关资源
      最近更新 更多