Cocos2d iphone 用于iPhone绘图行为的基本Cocos2d

Cocos2d iphone 用于iPhone绘图行为的基本Cocos2d,cocos2d-iphone,ccsprite,cclayer,Cocos2d Iphone,Ccsprite,Cclayer,我正在使用基本的Xcode模板项目。在HelloWorldLayer中,我将添加一个方形CCSprite作为位置为CGPointZero的子节点。我还添加了一个CCLayerColor子类,其子节点位置为CGPointZero。绘制时,精灵的中心点与屏幕左下角对齐。但是,该层的左下角与屏幕的左下角对齐 为什么精灵和图层的对齐方式不同?我希望两者的中心点都与屏幕的左下角对齐,因为它们的位置都设置为(0,0) 编辑-更多信息:如果屏幕截图难以解读,请道歉。精灵正在使用icon-small-50.p

我正在使用基本的Xcode模板项目。在HelloWorldLayer中,我将添加一个方形CCSprite作为位置为CGPointZero的子节点。我还添加了一个CCLayerColor子类,其子节点位置为CGPointZero。绘制时,精灵的中心点与屏幕左下角对齐。但是,该层的左下角与屏幕的左下角对齐

为什么精灵和图层的对齐方式不同?我希望两者的中心点都与屏幕的左下角对齐,因为它们的位置都设置为(0,0)

编辑-更多信息:如果屏幕截图难以解读,请道歉。精灵正在使用icon-small-50.png。该层的内容大小设置为(100100)。注:我尝试将图层的位置设置为(10,10),以确保其左下角与屏幕的左下角对齐(当位置为(0,0)时)

编辑-更多信息:刚刚在CCNode.h中注意到这一点:

// If YES, the Anchor Point will be (0,0) when you position the CCNode.
// Used by CCLayer and CCScene
BOOL ignoreAnchorPointForPosition_;

我想这就是原因。

一个CCSprite有一个默认的锚点(0.5,0.5),它是sprite的中心。之所以这样做,是因为精灵往往是较小的对象,而不是通常作为屏幕的图层

旋转精灵时,将注册点置于中心是有利的,因为您通常希望基于精灵的中心进行旋转


旋转CCLayer并不常见,因为它通常不是您移动的对象,而是您通常添加精灵的对象,例如背景图像

您上次的编辑解释了如何,而不是为什么。为什么,是因为我在回答中提到的原因。碰撞检测也是一个因素。特别是在确定两个对象之间的距离时,要使用它们的中心位置,而不是左下角。要对齐精灵,只需将精灵内容大小宽度和高度的一半添加到精灵位置即可。