我有一个精灵添加到图层。当我转换图层时,我遇到了很多问题。据我所知,一个图层的左下角有一个中心(anchorPoint),一个图层位于中间(右边?) - 我对此并不完全确定。
在下图中,我代表粉红色的CClayer和紫色的CCSprite。看看我认为中心在哪里。
当我向一个图层添加一个精灵时,我认为Cocos会像A一样,但我想要它像B一样。我该怎么做?另一种可能性是C,我认为更好,但这将涉及将图层的anchorPoint移动到中间并将精灵放在那里......我不知道如何做到这一点。
答案 0 :(得分:3)
更改CCSprite的锚点。
CCSprite *sprite = [CCSprite spriteWithFile:@"sprite.png"];
//For case A
sprite.anchorPoint = ccp(0.0f,0.0f);
sprite.position = ccp(0.0f,0.0f);
//For case B
sprite.anchorPoint = ccp(0.5f,0.5f);
sprite.position = ccp(0.0f,0.0f);
//For case c
sprite.position = ccp(ScreenWidth/2.0f, ScreenHeight/2.0f);
sprite.anchorPoint = ccp(0.5f,0.5f);
答案 1 :(得分:0)
锚点是重新连接坐标。 (0.f,0.f)是节点的左下角,(1.f,1.f)是右上角。所有变换都与锚点相关。定位也是变革的。这意味着在锚点(0.5f,0.5f)的情况下,所有定位和其他变换将被应用于节点的中心。如果要将精灵放置在图层的左下角,可以将其锚点设置为(0.f,0.f)并设置位置(0.f,0.f)。这意味着精灵的左下角将放置在父图层的(0.f,0.f)坐标上。
[sprite setAnchorPoint:ccp(0.f, 0.f)];
[sprite setPosition:ccp(0.f, 0.f)];
[layer addChild:sprite];
答案 2 :(得分:-1)
当我向一个图层添加一个精灵时,我认为Cocos会像A一样,但是我 想要像B一样。
不要试图猜测行为。将精灵添加到图层,看看会发生什么。
此外,CCNode
及其所有子类(包括CCSprite
)都具有position
属性,表示节点相对于其父源的位置。