所以这里是我在这里要做的事情的要点。
我有一系列前景精灵,当玩家移动时我会永远滚动。我想做的是,当玩家开始在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)
你试过搞乱这个属性吗?
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));
希望我能正确理解你的问题并能够提供帮助。