2

我在图层中添加了一个精灵。转换图层时遇到很多问题。据我所知,一个图层的中心(anchorPoint)在左下角,一个图层在中间(对吗?) - 我对此并不完全确定。

在下图中,我用粉色表示 CClayer,用紫色表示 CCSprite。看看我认为中心在哪里。

当我将精灵添加到图层时,我认为 Cocos 会像在 A 中一样,但我希望它像在 B 中一样。我该怎么做?另一种可能性是C,我认为它更好,但这将涉及将图层的anchorPoint移动到中间并将精灵放在那里......我不知道如何做到这一点。

在此处输入图像描述

4

3 回答 3

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);
于 2012-07-17T05:50:20.407 回答
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];
于 2012-07-17T15:27:44.020 回答
-1

当我将精灵添加到图层时,我认为 Cocos 会像在 A 中一样,但我希望它像在 B 中一样。

不要试图猜测行为。将精灵添加到图层,看看会发生什么。

此外,CCNode它的所有子类,包括CCSprite,都有position属性,它表示节点相对于其父节点的位置。

于 2012-07-17T04:45:33.007 回答