Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 求SKSpriteNode的反变换_Ios_Swift_Sprite Kit - Fatal编程技术网

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)
}