我正在使用此处提供的答案SpriteKit's SKPhysicsBody with polygon helper tool为我的精灵节点创建物理实体的多边形。
但是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(path,NULL,0,0);
当精灵节点在屏幕上移动时,这个偏移量(如果需要)会改变吗?
如果父级场景的定位点位于左上角,那么这些方法的偏移应该是什么?
答案 0 :(得分:0)
您所指的偏移量变量只是一个起点。您可以使用固定的起始坐标(如0,0。)轻松替换变量。
您的问题是关于物理机构,因此在这种情况下锚点不适用。物理体0,0坐标始终以节点的宽度和高度为中心。因此,虽然更改节点的锚点会影响其坐标的居中方式,但它对物理体无影响。