2017-03-16 2 views
0

私はからSKShapeNodeを引き出してSKSpriteNodeに書き出したいと思っています。 SKSpriteNodeにはすでに変換があり、自動的にSKShapeNodeに変換されますが、これは起こりたくありません。追加した後にシェイプノードがジャンプする方法のスクリーンショットを追加しました。私は、子としてシェイプノードを追加し、ノードにいくつかの逆の変換を適用するコードを追加しました(場合によってはうまく動作しますが、たとえば、ロボットをスケールしたり、移動したり回転させたり、 。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) 
} 

MaskLayerはSKShapeNodeです。どのようにして私のSKSpriteNodeの変換を簡単に見つけ、それを私のSKShapeNodeに逆の方法で適用すると、私の描画は視覚的に全く同じになりますか?

Screenshot

答えて

0

あなたはそれがその変革を継承したくない場合は、SKSpriteNodeにごSKShapeNodeを追加しないでください。

私の代わりにSKSpriteNode

のご SKSpriteNodeを保持し、親 SKNodeにご SKShapeNodeを追加します親 SKNodeを持つ示唆
関連する問題