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