2016-04-25 15 views
0

私はSKCropNodeでプログラミングを始めました。私の目的は、与えられた画像を、ゲームのための小さい部分(あとで矩形ではないかもしれない)に分割することです(ユーザはそれらの部分を正しい位置に動かさなければなりません)。SpriteKitのSKCropNode:位置とスケールの関係?

研究するためのコードは次のように簡単です:

let center = CGPoint(x: self.frame.width * 0.5, y: self.frame.height * 0.5) 
    let imageNamed = "image1.jpg" 
    let sprite1 = SKSpriteNode(imageNamed: imageNamed) 
    sprite1.position = center 

    let mask1 = SKSpriteNode(color: SKColor.redColor(), size: CGSize(width: 400, height: 400)) 
    mask1.position = center 

    let crop1 = SKCropNode() 
    crop1.maskNode = mask1 
    crop1.addChild(sprite1) 

    crop1.position = CGPointZero 
    self.addChild(crop1) 

コードがうまく実行され、トリミングされた画像を表示し、私はそのような大きさや位置などのいくつかのことを変更するときに、スプライト1の言うことを理解することができます。

しかし、sprite1、mask1、crop1の位置を少し変更した場合、特にsprite1またはcrop1に縮尺を追加するときに、私は完全に失われてしまいました。例えば、与えられた画像が0.35に縮小され、5×5個に分割された場合、{0、0}または{4,3}の部分をどのように取得/表示して元の位置に表示するかわかりません。言い換えれば、作物の内容と位置を制御することはできません。

私は、ゲームの目的に関するスケールを含むそれらの位置(sprite1、mask1、crop1の位置)の関係についてのヒントを教えてもらえますか(例えば、必要なものだけをスケールし、位置付ける)?あるいは実装するための他の簡単な方法がありますか?

答えて

0

私は自分自身に答える必要があります。ここでの答えは、SKCropNode、SKSpriteNode、およびマスクのスケールの関係ではなく、それはまだ複雑なので、SKCropNodeクラスはSKSpriteNodeのサブクラス化されていないため、後でインスタンスをプログラムするのは難しいです。それは問題の解決策かもしれません:与えられたイメージを小さなイメージに分割します。

ソリューションが全体1から小さいSKTextureを作成し、非常に簡単です:

let wholeTex = SKTexture(imageNamed: "myimage.jpg") 
let tex1 = SKTexture(rect: CGRectMake(0.25, 0.25, 0.5, 0.5), inTexture: wholeTex) 
let sprite1 = SKSpriteNode(texture: tex1) 
関連する問題