【问题标题】:How to align SKPhysicsBody and SKShapeNode?如何对齐 SKPhysicsBody 和 SKShapeNode?
【发布时间】:2013-11-29 06:03:49
【问题描述】:

我有以下代码创建一个SKShapeNode (self.tiles)。

CGMutablePathRef path = CGPathCreateMutable();
.... //Some stuff that creates a path

self.tiles = [SKShapeNode node];
[self addChild:self.tiles];

self.tiles.path = path;
self.tiles.physicsBody = [SKPhysicsBody bodyWithEdgeChainFromPath:path];

但似乎创建的物理体与屏幕上创建的形状不一致。SKShapeNode 正是我想要的屏幕上的位置(视觉上)。

我不知道物理实体的真正位置。

如何对齐SKShapeNodeSKPhysicsBody

【问题讨论】:

  • 路径点是相对的还是绝对的?
  • 假设它们是绝对的。
  • 对于形状节点和身体形状,它们必须是相对的(即在节点坐标空间中)
  • 你找到答案了吗?我注意到物理似乎与我的 SKShapeNode 子类上的实际形状有偏差,而且我太不理解 LearnCocos2D 的评论了……
  • 您的子节点使用相对于父节点的坐标空间,因此在您的计算中,您必须指定子节点在父节点的坐标空间中的位置。例如,如果父节点位于 (0,0),则子节点的位置将正是您期望的位置。但是如果父节点在 (10,0),那么子节点在世界中的坐标将偏移 (10,0)。因此,即使您指定孩子位于 (20,10),如果父母位于 (10,0),那么孩子将位于 (30,10)。明白了吗?

标签: ios objective-c sprite-kit skphysicsbody


【解决方案1】:

这是给其他可能难以理解的人:

一个精灵的锚点,是该精灵的孩子的局部坐标系开始的地方。所以如果锚点是一个精灵的中心,那么(0,0)个子节点对应于父精灵的中心。

对于CGRect,您通常指定CGRect 的原点(作为矩形的左下角),然后指定尺寸。

由于您可能正在使用CGRect 创建SKShapeNodeSKPhysicsBody 椭圆或矩形,因此您应该偏移它,使矩形的中心与精灵的中心相匹配,以便形状和物理体处于预期位置。

【讨论】:

  • 如果我只有一个 SKShapeNode 并想围绕它的中心旋转,我该怎么做?
  • 不知道。我已经停止使用 SpriteKit。也许您应该提出一个新问题,提供更多细节,包括您尝试过的操作。
  • 但我想你只需要更改一些标记为旋转或角度的属性。这似乎是一件很容易弄清楚的事情。
  • 我在这里发布了一个新问题:stackoverflow.com/questions/26284346/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-06
相关资源
最近更新 更多