iMedre

SKTransition Sınıfı Nedir Ve Fonksiyonları Nelerdir ? Sprite Kit Derinlikleri #27

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

SKTransition Ne İşe Yarar ?

Bir SKTransition nesnesi, bir SKView nesnesi tarafından sunulan bir SKScene nesnesi ile yeni gelen bir sahne arasında animasyonlu bir geçiş gerçekleştirmek için kullanılır.

Genel Bakış

Sahneler oyunların temel yapı taşlarıdır. Tipik olarak, oyununuzun bölümleri için müstakil sahneler tasarlar ve sonra bu sahneler arasında geçiş yaparsınız. Örneğin, aşağıdaki kavramların herhangi birini veya tümünü temsil edecek farklı sahne sınıfları oluşturabilirsiniz:

  • Diğer içerik yüklenirken görüntülenecek yükleme ortamı
  • Kullanıcının ne tür bir oyun oynamak istediğini seçmek için bir ana menü sahnesi
  • Kullanıcının seçtiği belirli bir oyun türünün ayrıntılarını yapılandırmak için bir sahne
  • Oyun sağlayan bir sahne
  • Oyun bittiğinde görüntülenen bir sahne

Bir sahneyi zaten sunan bir görünümde yeni bir sahne sunduğunda, eski sahneden yeni sahneyi değiştirmek için geçişi kullanma seçeneğine sahipsiniz. Bir geçişi kullanmak, sürekliliği sağlar, böylece sahne değişimi çok ani değildir.

İki Sahne Arası Geçiş 

Tipik olarak, oyun veya kullanıcı girdisine dayalı yeni bir sahneye geçiş yaparsınız. Örneğin, kullanıcı ana menü sahnesinde bir düğmeye basarsa, oynatıcının oynamak istediği eşleşmeyi yapılandırmak için yeni bir sahneye geçebilirsiniz.

Liste 1 olay işleyicisini nasıl hareketli bir şekilde uygulayabileceğinizi gösterir. İşleyici ilk önce düğmeyi vurgulamak için kendi üzerinde bir animasyon çalıştırır. Daha sonra bir geçiş nesnesi ve yeni sahne oluşturur. Son olarak, yeni sahneyi sunma görüşünü çağırıyor. Geçiş, bu değişikliğin hareketli olduğu anlamına gelir.

    override func mouseUp(with event: NSEvent) {
        run(buttonPressAnimation)
        let reveal = SKTransition.reveal(with: .down,
                                         duration: 1)
        let newScene = GameConfigScene(size: CGSize(width: 1024, height: 768))
        
        scene.view.presentScene(newScene,
                                transition: reveal)
    }

Geçiş gerçekleştiğinde, sahne özelliği yeni sahneyi göstermek için hemen güncellenir. Ardından animasyon gerçekleşir. Son olarak, eski sahneye yapılan güçlü referans kaldırılır. Geçiş gerçekleştikten sonra sahneyi korumanız gerekiyorsa, uygulamanızın eski sahneyi kendi güçlü referansını tutması gerekir.

Oyununuzu düzenlerken, bir oyundaki tüm sahneleri, sahneler arasında gerçekleşen geçişleri ve geçiş gerçekleştiğinde yeni sahneye geçirilmesi gereken verileri gösteren bir diyagram oluşturmak faydalı olabilir. İOS’ta görüntü denetleyicilerinden farklı olarak, SpriteKit, sahneler arasında veri aktarmak için yerleşik bir mekanizma sağlamaz. Bir sahne geçişi sırasında veri sağlamanız gerekiyorsa, yeni sahneyi yapılandırmak için kendi mekanizmanızı uygulamanız gerekir. Genellikle, bu her sahnede özel yöntemler ve özellikler tanımlamak anlamına gelir.

Geçiş Sırasında Animasyonların Oynatılmasını Yapılandırma

 

Geçiş nesnesindeki PauseIncomingScene ve pausesOutgoingScene özellikleri, geçiş sırasında hangi animasyonların oynatıldığını tanımlar. Varsayılan olarak, geçiş sırasında her iki sahne de duraklatılır. Ancak geçiş sırasında her iki sahnede de animasyonu etkinleştirmek isteyebilirsiniz.

Şekil 1, gelen ve giden sahnelerin hangi karelerinin ekranda farklı duraklamaları olan IncomingScene ve pausesOutgoingScene ile üç kare geçiş sırasında ekranda görüntülendiğini göstermektedir.

Örneğin, SKTransition’da kodu tekrar düşünün. Düğme bir eylemi yürütecek olduğundan, bu kod giden sahnenin canlandırılmasını bekler. Ancak belki de gelen sahne geçiş tamamlanana kadar içeriğini canlandırmamalıdır. Liste 2’deki kodun eklenmesi istenen etkiye sahiptir.

reveal.pausesOutgoingScene = true;
reveal.pausesIncomingScene = false;

Fonksiyonlar

Geçiş Nesneleri Oluşturma

class func crossFade(withDuration: TimeInterval)

Çapraz solma geçişi oluşturur.

class func doorsCloseHorizontal(withDuration: TimeInterval)

Yeni sahnenin bir çift kapanış yatay kapı olarak göründüğü bir geçiş oluşturur.

class func doorsCloseVertical(withDuration: TimeInterval)

Yeni sahnenin bir çift kapanış dikey kapı olarak göründüğü bir geçiş oluşturur.

class func doorsOpenHorizontal(withDuration: TimeInterval)

Yeni sahnenin bir çift açılı yatay kapı olarak göründüğü bir geçiş oluşturur.

class func doorsOpenVertical(withDuration: TimeInterval)

Yeni sahnenin bir çift açılan dikey kapı olarak göründüğü bir geçiş oluşturur.

class func doorway(withDuration: TimeInterval)

Bir önceki sahnenin bir çift açılış kapısı olarak kaybolduğu bir geçiş oluşturur.

class func fade(with: UIColor, duration: TimeInterval)

İlk önce sürekli bir renge dönüşen ve sonra yeni sahneye doğru ilerleyen bir geçiş oluşturur.

class func fade(withDuration: TimeInterval)

İlk önce siyaha dönüp yeni sahneye doğru ilerleyen bir geçiş yaratır.

class func flipHorizontal(withDuration: TimeInterval)

İki sahnenin, görüntünün merkezi boyunca uzanan yatay bir çizgi boyunca çevrildiği bir geçiş oluşturur.

class func flipVertical(withDuration: TimeInterval)

İki sahnenin, görüntünün merkezi boyunca uzanan dikey bir çizgi boyunca çevrildiği bir geçiş oluşturur.

class func moveIn(with: SKTransitionDirection, duration:TimeInterval)

Yeni sahnenin eski sahnenin üzerine taşındığı bir geçiş yaratır.

class func push(with: SKTransitionDirection, duration: TimeInterval)

Yeni sahnenin hareket ettiği bir geçiş oluşturur ve eski sahneyi manzaradan dışarı iter.

class func reveal(with: SKTransitionDirection, duration:TimeInterval)

Eski sahnenin manzaradan uzaklaştığı ve altındaki yeni sahneyi ortaya çıkaran bir geçiş yaratır.

init(ciFilter: CIFilter, duration: TimeInterval)

Transferi gerçekleştirmek için Core Image filtresi kullanan bir geçiş oluşturur.

Geçiş Sırasında Sahnelerin Duraklatılmasının Yapılandırılması

var pausesIncomingScene: Bool

Geçiş sırasında gelen sahnenin duraklatılıp duraklatılmadığını belirleyen bir Boole değeri.

var pausesOutgoingScene: Bool

Geçiş yapılan sahnenin geçiş sırasında duraklatılıp duraklatılmadığını belirleyen bir Boole değeri.

 

 

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.