2

Swift でスプライト キットを使用し、関数を使用してテクスチャを設定していSKTexture(rect:inTexture:)ます。組み込みのテクスチャ アトラスを使用していません。代わりに、SKTexture(imageNamed:). これは、個別の画像ではなく、データ ファイルにアトラスとサブテクスチャの位置 (ピクセル単位) が既にあるためです。

したがって、画像が @2x (サイズがピクセル寸法の半分) の場合.size()、オブジェクトの は正しいです。SKTextureサブレクト座標 (単位座標は 0-1) をサイズで割って計算しますが、元の画像スケールを知る必要があるため、ピクセル寸法をそれで割ることができます。

うまく動作する私のコードは次のとおりです。

// Create the texture as a sub-rect of the parent texture
if  let parentTexture = textures[parentTextureId] {
    let size = parentTexture.size()
    var subRect = CGRectFromString(subRectString)
    subRect = CGRectMake(
        (subRect.origin.x / 2) / size.width,
        (size.height - ((subRect.origin.y / 2) + (subRect.size.height / 2))) / size.height,
        (subRect.size.width / 2) / size.width,
        (subRect.size.height / 2) / size.height)
    let texture = SKTexture(rect: subRect, inTexture: parentTexture)
    textures[textureId] = texture
}

/ 2問題は、スケールのすべての調整をハードコーディングしなければならなかったことです。ハードコーディングせずにサブレクトを正しく計算できるように、テクスチャの元の画像スケール (または実際のピクセル寸法) を取得するにはどうすればよいですか?

4

0 に答える 0