Ios 求SKSpriteNode的反变换
我想将从我的Ios 求SKSpriteNode的反变换,ios,swift,sprite-kit,Ios,Swift,Sprite Kit,我想将从我的SKScene绘制的SKShapeNode添加到SKSpriteNode。SKSpriteNode可能已经有了一些转换,可以自动转换为SKShapeNode,这是我不希望发生的。我添加了一个shapenode在添加后跳跃方式的屏幕截图。我还添加了代码,将形状节点作为子节点添加,并对节点应用一些相反的变换(在某些情况下效果很好,但例如,当我缩放、移动和旋转机器人时,图形会跳到另一个位置) MaskLayer是一家酒吧。我如何轻松找到我的SKSpriteNode的转换,并将它们以相反的方
SKScene
绘制的SKShapeNode
添加到SKSpriteNode
。SKSpriteNode
可能已经有了一些转换,可以自动转换为SKShapeNode
,这是我不希望发生的。我添加了一个shapenode在添加后跳跃方式的屏幕截图。我还添加了代码,将形状节点作为子节点添加,并对节点应用一些相反的变换(在某些情况下效果很好,但例如,当我缩放、移动和旋转机器人时,图形会跳到另一个位置)
MaskLayer是一家酒吧。我如何轻松找到我的SKSpriteNode的转换,并将它们以相反的方式应用到我的SKShapeNode,以便我的绘图在视觉上保持完全相同
如果您不希望将
SKShapeNode
添加到SKSpriteNode
中,则不应将其添加到SKSpriteNode
中
我建议有一个父SKNode
来保存您的SKSpriteNode
,并将您的SKShapeNode
添加到父SKNode
而不是SKSpriteNode
func addMaskPath(_ path: CGPath) {
let drawing = MaskLayer(withPath: path)
drawing.zRotation = -zRotation
drawing.xScale = drawing.xScale / xScale
drawing.yScale = drawing.yScale / yScale
drawing.position.x = (drawing.position.x - position.x) / xScale
drawing.position.y = (drawing.position.y - position.y) / yScale
drawing.position.y = drawing.position.y*cos(zRotation) - drawing.position.x*sin(zRotation)
drawing.position.x = -drawing.position.y*sin(zRotation) + drawing.position.x*cos(zRotation)
cropMask?.eraserMask?.addChild(drawing)
}