iMedre

SKTileGroup Sınıfı Nedir Ve Fonksiyonları Nelerdir? Sprite Kit Derinlikler #23

Merhaba, bu yazıda SKTileGroupRule sınıfını anlatacağım. Keyifli okumalar.

Kısaca SKTileGroup Nedir?

Bir tile haritası içinde birleştirilecek şekilde tasarlanan ilgili tile tanımlarının bir koleksiyonunu içine alan bir sınıf.

Genel Bakış

Bir SKTileGroup nesnesi, tek bir döşemenin tanımını veya bitişik kuralları tanımlayan bir SKTileGroupRule nesnesi dizisini içerir.

Bir tile grubu sağlarsınız:

  • Bir tile haritası düğümünü tek bir dokuyla doldurmak için kullanılabilecek tek bir döşemenin tanımı.
  • Dokuların bitişikliklerine ve tanımlarının yerleştirme ağırlıklarına bağlı olarak otomatik yerleştirilmesine izin veren bir veya daha fazla kiremit grubu kuralları dizisi. Örneğin, bir kiremit grubu, bitişik olarak yerleştirildiğinde, tek bir nesne gibi görünen orta ve sekiz kenarlı döşemelerin tanımlarını içeren dokuz kiremit grup kuralları içerebilir.

Döşeme gruplarını oluşturmak için tercih edilen yöntem, Xcode’ta editör araçlarını kullanmaktır. Bununla birlikte, SpriteKit’in döşeme desteğiyle programlı olarak çalışmak isterseniz, aşağıdaki örnekler gerekli adımları tartışır.

Homojen Tile Grubu Oluşturmak

Tek bir doku içeren bir kiremit grubu oluşturmak için init (tileDefinition : ) başlatıcısı ile yeni bir döşeme grubu oluşturursunuz. Aşağıdaki liste, BG.png adlı bir resme dayalı tek bir tanım içeren bir döşeme grubunu nasıl oluşturabileceğinizi göstermektedir.

let backgroundTexture = SKTexture(imageNamed: "BG.png")
let backgroundDefinition = SKTileDefinition(texture: backgroundTexture)
let backgroundGroup = SKTileGroup(tileDefinition: backgroundDefinition)

Rasgele Yerleşimde Homojen Tile Grubu Oluşturmak

Birden fazla doku içeren bir döşeme grubu oluşturmak için, init (rules : ) başlatıcısı ile yeni bir döşeme grubu oluşturursunuz. Aşağıdaki kod, iki tanım içeren bir kiremit grubu nasıl oluşturabileceğinizi gösterir – biri RED.png adlı bir görüntüye ve diğeri ise BLUE.png adlı bir görüntüye dayanır.

let redTexture = SKTexture(imageNamed: "RED.png")
let redDefinition = SKTileDefinition(texture: redTexture)
redDefinition.placementWeight = 3
 
let blueTexture = SKTexture(imageNamed: "BLUE.png")
let blueDefinition = SKTileDefinition(texture: blueTexture)
blueDefinition.placementWeight = 1
 
let redBlueRule = SKTileGroupRule(adjacency: .adjacencyAll,                                                                    tileDefinitions: [redDefinition, blueDefinition])
let group = SKTileGroup(rules: [redBlueRule])

Bir kiremit haritası düğümü bu grup kullanılarak bir çini seti ile birlikte verildiğinde ve çini dolgusu fill(with: ) yöntemi ile doldurulduğunda, yerleştirme ağırlıkları çini rasgele atanmasını kontrol eder. Bu durumda, mavi fayanslardan üç kat daha fazla kırmızı olacaktır.

Komşuluk Kurallarını Kullanarak Bir Tile Grubu Oluşturma

To create a tile group that uses adjacency, you need to create a set of rules for each of the adjacency values. For a grid based layout, you will need 13, illustrated below:

let centerTileDefintion = SKTileDefinition(texture: SKTexture(imageNamed: "CENTER.png"))
let centerRule = SKTileGroupRule(adjacency: .adjacencyAll,
                                 tileDefinitions: [ centerTileDefintion ])
 
let upEdgeDefinition = SKTileDefinition(texture: SKTexture(imageNamed: "N.png"))
let upEdgeRule = SKTileGroupRule(adjacency: .adjacencyUpEdge,
                                 tileDefinitions: [ upEdgeDefinition ])
 
let downEdgeDefinition = SKTileDefinition(texture: SKTexture(imageNamed: "S.png"))
let downEdgeRule = SKTileGroupRule(adjacency: .adjacencyDownEdge,
                                   tileDefinitions: [ downEdgeDefinition ])

Bir tile grubu yapmak için 13 kural kullanılır:

let group = SKTileGroup(rules: [centerRule, upEdgeRule, downEdgeRule, ...]

 

Fonksiyonlar

init(rules: [SKTileGroupRule])

Bir kiremit grubunu belirtilen kiremit grubu kurallarıyla oluşturur ve başlatır.

init(tileDefinition: SKTileDefinition)

Tek bir kiremit tanımlamasıyla basit bir kiremit grubu oluşturur ve başlatır.

var name: String?

Alıcının adı.

var rules: [SKTileGroupRule]

Döşeme grubunun karo yerleşimini belirlemek için kullandığı bir dizi SKTileGroupRule nesnesi.

class func empty()

Boş bir kiremit grubu oluşturun. Bunu bir döşeme haritasına yerleştirmek, oradaki mevcut döşemeyi siler.

Erdem Özgür

Yorum Ekle

Bizleri Sosyal Medyadan Takip Edebilirsiniz

Utanmana gerek yok, bizimle iletişim kurabilirsin. İnsanlarla tanışmayı ve yeni arkadaşlar edinmeyi seviyoruz.