2015-03-31 354 views
0

我使用这里提供的答案SpriteKit's SKPhysicsBody with polygon helper tool为我的精灵节点创建物理体的多边形。CGPathMoveToPoint/CGPathAddLineToPoint方法参数令人困惑

但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. 当Sprite节点在屏幕上移动时,这个偏移(如果需要)会改变吗?

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

回答

0

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

你的问题是关于一个物理体,所以锚点不适用于这种情况。物理体0,0坐标始终与节点的宽度和高度相关。所以,在改变节点的锚点时,它的坐标是如何居中的,它对物理体没有任何影响。