从右下角缩放CCSprite

时间:2013-10-10 07:48:12

标签: ios cocos2d-iphone sprite ccsprite

所以这里是我在这里要做的事情的要点。

我有一系列前景精灵,当玩家移动时我会永远滚动。我想做的是,当玩家开始在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];
}

2 个答案:

答案 0 :(得分:0)

你试过搞乱这个属性吗?

ignoreAnchorPointForPosition(false);

我正在使用cocos2d-x,应该有类似的东西

答案 1 :(得分:0)

如果我理解正确,你想在玩家的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));

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