Sprite kit CGPathMoveToPoint/CGPathAddLineToPoint方法参数令人困惑

Sprite kit CGPathMoveToPoint/CGPathAddLineToPoint方法参数令人困惑,sprite-kit,skspritenode,skphysicsbody,cgpathref,Sprite Kit,Skspritenode,Skphysicsbody,Cgpathref,我使用这里提供的答案为我的精灵节点创建物理体的多边形 但是CGPathMoveToPoint/CGPathAddLinetoPoint方法的偏移量参数令人困惑(我在苹果的文档中也找不到引用) 在脚本生成的代码中,offsetX和offsetY定义为: CGFloat offsetX = sprite.frame.size.width * sprite.anchorPoint.x; CGFloat offsetY = sprite.frame.size.height * sprite.anchor

我使用这里提供的答案为我的精灵节点创建物理体的多边形

但是CGPathMoveToPoint/CGPathAddLinetoPoint方法的偏移量参数令人困惑(我在苹果的文档中也找不到引用)

在脚本生成的代码中,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); 
  • 为什么我们需要这个补偿

  • 对于纹理的左下角,为什么我不能提供(0,0)如下:

    CGPathMoveToPoint(路径,NULL,0,0)

  • 当精灵节点在屏幕上移动时,该偏移量(如果需要)会改变吗

  • 如果父场景的锚定点位于左上角,这些方法的偏移量应该是多少


  • 您所指的偏移量变量只是一个起点。您可以同样轻松地使用固定的起始坐标(如0,0)替换变量

    你的问题是关于物理体的,所以锚定点在这种情况下不适用。物理实体0,0坐标始终相对于节点的宽度和高度居中。因此,更改节点的定位点会影响其坐标的居中方式,但不会影响物理实体