【问题标题】:Basic Cocos2d for iPhone drawing behaviorCocos2d for iPhone 的基本绘图行为
【发布时间】:2013-01-10 05:16:47
【问题描述】:

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

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

编辑 - 更多信息:如果屏幕截图难以破译,请见谅。精灵使用的是 icon-small-50.png。该图层的内容大小设置为 (100,100)。注意我尝试将图层的位置设置为 (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_;

我认为这可以解释。

【问题讨论】:

  • 您上次的编辑解释了如何,而不是为什么。为什么,是因为我在回答中提到的原因。

标签: cocos2d-iphone ccsprite cclayer


【解决方案1】:

CCSprite 的默认锚点为 (0.5,0.5),它是精灵的中心。这样做是因为精灵往往是您可以四处移动的较小对象,而不是通常是屏幕的层。

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

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

【讨论】:

  • 碰撞检测也是一个因素。尤其是在确定两个对象之间的距离时,您要使用它们的中心位置,而不是左下角。要对齐精灵,只需将精灵的 contentSize 宽度和高度的一半添加到精灵的位置即可。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-13
相关资源
最近更新 更多