2013-10-10 55 views
0

所以这里是我在这里要做的事情的要点。从右下角刻度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]; 
} 
+0

你的问题在右下方,描述在左下方。如果左下角然后是锚点(0,0),右侧(0,1) – Guru

回答

0

您是否尝试过使用此属性?

ignoreAnchorPointForPosition(false); 

我使用了cocos2d-x,应该有类似于

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)); 

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