0

我正在使用此处提供的答案SpriteKit 的 SKPhysicsBody 和多边形辅助工具来为我的精灵节点创建物理体多边形。

但是 CGPathMoveToPoint/CGPathAddLinetoPoint 方法的偏移参数令人困惑(我也无法在 Apple 的文档中找到参考)。

在脚本生成的代码中,offsetX 和 offsetY 定义为:

CGFloat offsetX = sprite.frame.size.width * sprite.anchorPoint.x;
CGFloat offsetY = sprite.frame.size.height * sprite.anchorPoint.y;

在为演示提供的 gif 中,它是:

CGFloat offsetX = sprite.frame.size.width/2; 
CGFloat offsetY = sprite.frame.size.height/2;

这两个偏移量都用于更正 CGPathMoveToPoint/CGPathAddLinetoPoint 方法中的参数,例如:

CGPathMoveToPoint(path, NULL, 0 - offsetX, 0 - offsetY); (for the bottom left corner of the texture)
CGPathAddLineToPoint(path, NULL, 11 - offsetX, 0 - offsetY); 
  1. 为什么我们需要这个偏移量?

  2. 对于纹理的左下角,为什么我不能只提供 (0,0) 之类的:

    CGPathMoveToPoint(路径, NULL, 0, 0);

  3. 当精灵节点在屏幕上移动时,这个偏移量(如果需要)会改变吗?

  4. 如果父场景的锚点在左上角,这些方法的偏移量应该是多少?

4

1 回答 1

0

您所指的偏移变量只是一个起点。您可以轻松地将变量替换为固定的起始坐标,例如 0,0。

您的问题是关于物理体的,因此锚点不适用于这种情况。物理体 0,0 坐标始终相对于节点的宽度和高度居中。因此,虽然更改节点的锚点会影响其坐标的居中方式,但它对物理体没有影响。

于 2015-03-31T15:30:36.900 回答