我使用这里提供的答案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);
为什么我们需要这个偏移?
对于纹理的左下角,为什么我不能只提供(0,0),如:
CGPathMoveToPoint(路径,NULL,0,0);
当Sprite节点在屏幕上移动时,这个偏移(如果需要)会改变吗?
如果父级场景的锚点在左上角,那么这些方法的偏移量应该是多少?