‫Merhaba ve hoş geldiniz.
‫Bu derste, C++'da yeni bir bileşen oluşturacağız, bu tetikleyici kutu, oyuğa adım attığımızda veya
‫oyuğa herhangi bir nesne yerleştirdiğimizde bize rapor verecek.
‫Sol üst köşede küçük bir plan mesajı aldığımızı görebilirsiniz.
‫Bunu yapmak için de örtüşmelerin, engellemelerin ve farklı çarpışma tepkilerinin Unreal'da nasıl
‫davrandığını anlamamız gerekecek.
‫Hadi içeri dalalım ve öğrenelim.
‫Artık izleme kanallarının nasıl çalıştığına aşina olduk.
‫Sahnemizdeki bu çalı gibi farklı nesneler üzerinde iz tepkileri verebileceğinizi biliyoruz.
‫Burada, silah izlerini görmezden geldiğini, ancak görünürlük izlerini engellediğini görebilirsiniz.
‫Bir de şu kurşun geçirmez cam örneği var.
‫Silahları engeller ancak görüşe izin verir ve her ikisini de engelleyen bir tuğla duvar.
‫Böylece bu sistemin izleme kanallarıyla nasıl çalıştığını görebilirsiniz.
‫Şimdi, hangi nesnelerin birbiriyle örtüşebileceğine, hangilerinin geçebileceğine, hangilerinin birbirini engelleyebileceğine
‫karar vermeye çalışırsak ne olur?
‫Bu biraz daha karmaşık bir hal alabilir.
‫Bunu, çirkin yaratığı piyonumuzla üst üste getirmeye çalıştığımızda zaten görmüştük.
‫İşte böyle çalışıyor.
‫Esasen, bu nesne türlerini kullanırız.
‫Her nesne belirli bir nesne türüne ait olabilir.
‫Bu da C++'daki tip sisteminden farklıdır.
‫Bunlar çarpışma tipleridir.
‫Yani A ve B nesneleriniz olabilir ve bunların ayarlarında, örneğin çirkin adamımızın ayarlarına
‫bakarsak, kendi nesne türlerine sahip olduklarını görebilirsiniz.
‫Bu bir dünya statik nesnesidir, ancak daha sonra diğer nesne türlerine de yanıtları
‫vardır.
‫Böylece bu nesnenin diğer dünya statiklerini engelleyeceğini, diğer dünya dinamiklerini engelleyeceğini, piyon türleriyle
‫örtüşeceğini, fizik cisimlerini engelleyeceğini ve hemen hemen diğer her türü engelleyeceğini görebilirsiniz.
‫Ve tabii ki eğer gidip BP oyuncumuzu bulursak piyonun kendisi.
‫Kapsül bileşenine bakın, ayrıntılara bakın ve aşağı kaydırarak çarpışma ön ayarının olduğu yere
‫gelin.
‫Piyon Çarpışma ön ayarını genişletebilirsek, onu düzenleyemeyiz, ancak ne yaptığını görebiliriz.
‫Ve dünyanın durağanlığına karşı kendi tepkisi olduğunu görebilirsiniz.
‫Dolayısıyla, dünyanın statik durumuna tepkisi onu bloke etmek olacaktır.
‫Yani aslında burada iki farklı seçeneğimiz var.
‫Piyon, dünya istatistiklerini engellediğimi söylüyor, ancak çirkin adam piyonları üst üste bindirdiğimi söylüyor.
‫Peki ne olması gerekiyor?
‫İşte bu tablo burada devreye giriyor ve ders kaynaklarında tamamını okumak
‫isterseniz bu blog yazısına bir bağlantı verdim.
‫Böylece ikisi arasında en az engelleme etkileşimi olduğunu görebilirsiniz.
‫Yani eğer A nesnesi piyon ise ve biz "hey, bu çörtene engel olmalıyım" diyorsak, ama çörtenler B nesnesi ise ve
‫o da "hey, bu piyonla örtüşmeliyim" diyorsa.
‫Bu yüzden bu ikisinden en az engellemeyi alacak ve üst üste binecek.
‫Yani iki şeyin birbirini engellemesini istiyorsanız, her ikisinin de bunu yapmak istedikleri konusunda hemfikir
‫olmaları gerekir.
‫Şimdi başka bir örneğe bakalım.
‫Nesne tipi piyon olan oyuncumuz var ve diğer piyonlara karşı nesne tepkisi onları engellemek
‫ve dünya statik nesneleri onları engellemektir.
‫Tuğla duvar dünyada statik bir nesnedir.
‫Piyonları ve dünya statiklerini engelleyebilir.
‫Yani bu ikisi birbiriyle aynı fikirde olacaktır.
‫Şimdi çalı da dünya statiktir, ancak piyonlarla çakışır.
‫Bizim gargoyle'a çok benziyor ama dünya statiğini engelliyor.
‫Yani aşağı inip ne olacağına bakarsanız, piyon çalıların arasından geçmeye çalışır ve geçebilir
‫çünkü en az engelleme seçeneği olan üst üste binme seçeneğini kullanır ve kodda veya
‫blueprint'te bağlanabileceğimiz bir üst üste binme olayı oluşturur, oysa tuğla duvardan
‫geçemez ve yine Blueprint veya C++'da bağlanabileceğimiz bir vuruş olayı oluşturur.
‫Peki neden bu kadar derinlere iniyorum?
‫Çünkü yapmak istediğim şey, bu duvarın içine temelde görünmez olan bir nesne koyarak çirkin yaratığı buraya
‫koymamızı ve bu gerçekleştiğinde bir olay almamızı sağlamak.
‫Gargoyle bir olayı destekleyecek ve "Hey, benimle çakışan bir şey var" diyecek.
‫Peki tüm bunlar neden önemli?
‫Çünkü görünmez olan ama çirkin yaratıkla örtüşecek ve bize bu gerçeği bildirecek bir nesne koymak
‫istiyorum.
‫Daha sonra bunu C++'dan sorgulayabilir veya Blueprint'teki olayları her iki şekilde de alabiliriz.
‫Bunu yapmanın yolu, öncelikle bu zindan duvarından bir plan oluşturmaktır.
‫Ayrıntılar bölmesindeki blueprint düğmesine tıklayacağım, yeni bir alt
‫sınıf oluşturacağım ve adını bip, alt çizgi gizli duvar koyacağım ve oluşturmak için select düğmesine basacağız ve ana penceremize bir docket ekleyeceğiz
‫ve üzerinde bir taşıyıcı var.
‫Ayrıca buraya eklemek istediğim şey, esasen kutu çarpışması olarak adlandırılan bir bileşendir.
‫Yani bir kutu çarpışmasına tıklarsak, tamamen görünmez olduğunu görebilirsiniz.
‫Size sadece değiştirebileceğimiz bazı kutu genişlikleri verir, bunları daha büyük yapabiliriz, böylece çirkin
‫suru bu kutunun içine yerleştirdiğimiz her yerde onu kabul edecektir.
‫Ve burada çarpışma seçenekleri olduğunu görebiliyoruz.
‫Varsayılan olarak tüm dinamiklerle örtüşen bir ön ayarımız var.
‫Ancak özel seçeneğine tıklarsak, nesne türlerini değiştirebileceğimizi ve burada farklı şeylere nasıl yanıt vereceğini değiştirebileceğimizi
‫görebilirsiniz.
‫Ve bence en önemlisi, gördüğünüz gibi, çoğu nesne türüyle örtüşecek şekilde ayarlanmıştır, bu da dünya dinamiğiyle
‫örtüşecek şekilde ayarlanmamış olsalar bile, örtüşecekleri anlamına gelir.
‫Hiçbir şeyi engellemeyecek.
‫Gargoyle'u buraya yerleştirmemize izin verecek.
‫Şimdi gidip bu bileşeni sahneden sileceğim, çünkü yapmak istediğim şey
‫C++'da bu kutu çarpışmasını temel alan yeni bir bileşen oluşturmak.
‫Şimdi size bu kutuyla, varsayılan ön ayara geri dönersek, ki bu varsayılan ayar tüm dinamiklerin üst üste
‫binmesi idi, ve kontrol edersek ya da zaten işaretli olduğu gibi aslında üst üste binme olayları oluştur zaten işaretli olduğunu göstermek
‫istiyorum.
‫Ardından olay grafiğimize geçebilir ve buraya sağ tıklayıp çakışma olup olmadığına bakabiliriz.
‫Ve hemen üstte, kutu için üst üste binmeye başlayan bir ek bileşen görebilirsiniz.
‫Yani buna tıklarsak ve aslında kutu bileşenini tetikleme alanı olarak yeniden adlandırırsak.
‫Yani temel olarak tetikleyici alanla çakışırsak, bizimle çakışan şeyin özelliklerinin
‫bir listesini alacağız, böylece
‫Örtüşüyor.
‫Adını alabiliriz.
‫Böylece görünen ad düğümün adı olur.
‫Daha sonra bunu alıp sonuç dizesini yazdırabilir ve bunu yürütme pimine bağlayabiliriz ve devam edip oynat
‫düğmesine basabiliriz.
‫Ve eğer alana doğru yürürsek, bip sesi çalan kişinin onunla örtüşen şey olduğunu söylediğini görebilirsiniz.
‫Şimdi o bölgeyi göremiyorum çünkü çok karanlık.
‫Bu yüzden tekrar gizli duvara gideceğim, bir bip sesi ve bu küçük oyuğa yerleştireceğim, aşağı bakacak şekilde
‫döndüreceğim ve nesneyi istediğimiz alanı aydınlatacak bir spot ışık bileşeni
‫ekleyeceğim.
‫Şimdi sahnede bunu çok net bir şekilde görebiliyoruz.
‫O zaman devam edip oynat tuşuna basalım ve o oyuğa doğru yürüyelim.
‫Üst üste bindirirsek, bip sesi çıkaran oyuncunun üst üste bindiğini söyler ve yeni çıkardığımız yakalayıcıyı
‫kullanarak gidip bu hücreden çirkin adamımızı yakalayabilir ve bu çirkin adamı alıp bu alana yerleştirebiliriz.
‫Ancak, herhangi bir çakışma olayı oluşturmuyor gibi görünüyor ve bunun nedeni de tam ihtiyacımız olduğu gibi, çarpışmanın
‫iki tarafı olması.
‫Ayrıca örtüşen etkinlikler üreten iki taraf vardır.
‫Dolayısıyla, bu kutu bileşeninde bunu etkinleştirmiş olmamız, içine giren gargoyle'un bizi herhangi bir çakışma
‫olayına karşı uyaracağı anlamına gelmez.
‫Bu yüzden yapmamız gereken şey çirkin yaratığa gidip onu kontrol etmek ve çakışma olayları oluşturmaktır.
‫O zaman çakışma olayları gerçekleşmelidir.
‫Gidip gargoyle'u alalım, onu oyuğa götürelim ve içine sokalım.
‫Şimdi de bir etkinlik yaklaşıyor.
‫Bu gerçekleştiğinde, Gargoyle heykeli gerçekten de tescil edilmiş olur.
‫Şimdi, bu özel durumda blueprint olaylarını kullanmak istemiyorum.
‫Yapmak istediğim şey, tetikleyici alan bileşenimizi almak ve aslında bunu, içinde Gargoyle heykelinin
‫olup olmadığını değerlendirebilen bir C++ bileşenine dönüştürmek.
‫Bunu yapmanın yolu, bileşen eklemeye gidip yeni bir C++ bileşeni oluşturmaktır.
‫Ve ana sınıf olarak, aktif bileşen veya sahne bileşeni seçmek yerine,
‫tüm sınıflara gideceğiz ve bunun yerine kutu bileşenini arayacağız.
‫Ve şekil bileşenlerini, kutu bileşenlerini, istediğimizi görebilirsiniz ve devam edip ileri düğmesine
‫basabiliriz.
‫Şimdi size ana sınıfı nasıl ayarlayacağınızı gösterdiğime göre bu bileşeni oluşturmanız için sizi zorlamak
‫istiyorum.
‫Bu yüzden buna tetikleyici bileşenler adını vereceksiniz ve oluşturduğumuz diğer bileşenlerden bazı şeyleri
‫kopyalamanız gerekecek çünkü aynı şekilde ayarlanmadı.
‫Farklı bir ebeveynden türediğimize göre, you sınıfı satırını kopyalamanız gerekecek.
‫Bu satırın tamamı, oluşturacağınız tetikleyici bileşen üzerinde temelde boştur.
‫Bu yüzden bunu tutucunuzdan ya da taşıyıcınızdan kopyalayın, aksi takdirde bileşenlerinizi planlarınıza
‫ekleyemezsiniz.
‫O zaman bu yeni tetikleyici bileşenleri mevcut kutu bileşenimizin yerine kullanmalı ve Begin Play'den bir şeyler yazdırmalısınız.
‫Yine, oyundaki büyüklük sizin için otomatik olarak ayarlanmayacaktır, bu nedenle ayarlamak için diğer
‫bileşenlerimizin başlık dosyasından ve C++ dosyasından kopyalamanız gerekecektir.
‫Videoyu duraklatın ve deneyin.
‫Tamam.
‫Tekrar hoş geldiniz.
‫Bu yüzden buna tetikleyici bileşen diyeceğim.
‫Hepsi tek kelime ve sınıf yaratmak için vurun.
‫Tahmin ettiğiniz gibi sınıf satırında parantezlerin içinde hiçbir şey yok ve editörümüze gidip BP gizli duvarına bakarsak,
‫bu bileşeni eklemeye çalışır ve tetikleyiciyi ararsak, hiçbir şey çıkmadığını
‫görebilirsiniz.
‫Bunun nedeni, eğer grab a dot H'ye gidip use class satırına bakarsak, burada blueprint
‫spawn able component yazan bir kısım olduğunu görebilirsiniz.
‫En önemlisi de bunu kopyalamamız gerekiyor.
‫Ayrıca bir sınıf grubu vardır.
‫Tümünü kopyalayabiliriz çünkü bu, bu bileşeni blueprint'te oluşturmamızı sağlar, böylece gidip
‫bunu tetikleyici bileşen için sınıf satırı olarak yapıştırabiliriz.
‫Ve diğer bir şey, eğer grab'e gidersek, big in play olduğunu görebilirsiniz, korumalı
‫bir bölümün içindedir ve bu begin play fonksiyonunun tanımını kopyalayabilir, tetikleyici bileşenimize kopyalayabilir
‫ve grabber'da olduğu gibi, oluşturulan gövdenin hemen altına koyabiliriz.
‫Daha sonra CP'mize girebilir ve oyunun ne kadar büyük tanımlandığını görebiliriz.
‫Burada, aslında önemli olan oyunda süper büyük bir havaya sahip olduğunu görebilirsiniz.
‫Şimdi bunu kopyalayıp bir tetikleyici bileşene geçeceğiz.
‫CP Ve iki nokta üst üste işaretini "tetikleyici bileşen, oyuna başla" olarak değiştireceğiz.
‫Ve sonra buraya you log'umuzu koyabiliriz ve sadece trigger component alive gibi basit bir
‫mesaj yazacağız ve devam edip derleyeceğiz.
‫Başlık dosyamızda oldukça önemli değişiklikler yaptığımız için bu biraz zaman alabilir.
‫Bu işlem tamamlandıktan sonra, BP gizli duvarımıza girebilir, ekle'ye gidebilir ve tetikleyiciyi arayabiliriz.
‫Ve burada tetikleyici bileşenimizi görebilirsiniz.
‫Artık bunu da ekleyebiliriz.
‫Daha önce kurduğumuz tetikleyici alanımızı kaldırabiliriz.
‫Devam edin ve bunu silin ve silmek isteyip istemediğimizi kontrol edin.
‫Temel olarak oluşturduğumuz bu olayı geçersiz kılacak ve bir göz atacak olursak çarpışmaların tetikleyicide istediğimiz
‫gibi ayarlanıp ayarlanmadığını kontrol edebiliriz.
‫Yine de, tüm dinamiklerle örtüşecek ve örtüşme olayları oluşturacak şekilde ayarlanmıştır.
‫Ve son olarak, değiştirmemiz gereken şey, tetikleyicimizi seçeceğimiz bu olaydır
‫sağ tıklayın ve tetikleyici çarpışması için olay ekle'yi açmaya gidin ve bileşen üzerine ekleyin üst üste binmeye başlayın.
‫Daha önce de bunu kullanıyorduk.
‫Aktif pimi bağlayın ve zindan seviyesine gitmek için infaz pimini bağlayın.
‫Gidip gargoyle'u alın, oyuğa sokmaya çalışın ve bunun işe yaramadığını fark edin.
‫Şimdi bu tetikleyiciyi kurduk.
‫Görüntü alanına gidelim ve aslında tetikleyicinin yeterince büyük yapılmadığını görebilirsiniz.
‫Doğru konumlandırmadık.
‫Şimdi gidip oyuğun ortasına konumlandıralım ve kutu kapsamı özelliklerini artıralım, böylece
‫bu oyuk alanın içine ne koyarsak koyalım yakalayalım.
‫Biraz daha büyük olması ve bize bir güvenlik marjı sağlaması ve zindana girip play tuşuna basıp
‫oyuğa girebilmemiz önemli değil.
‫Ve elbette, BP oyuncusunun o oyuğa girdiğini tespit eder.
‫Harika bir şey.
‫Bu derste, nesne türleri ve nesne türü yanıtları hakkında her şeyi öğrendik ve bunları bu tetikleyici
‫bileşeni kurmak için kullandık.
‫Bir sonraki derste görüşürüz.