‫Merhaba ve tekrar hoş geldiniz.
‫Şimdi, mermi sınıfımızı zaten oluşturduk ve bu şeyleri seviye içinde ortaya çıkarmaya hazırız,
‫böylece onları kulelere fırlatabilir ve sonunda onları yok edebiliriz.
‫Şimdi, aktörleri ortaya çıkarmak spawn actor fonksiyonunu içerecektir.
‫Bu videoda bunun nasıl çalıştığını öğreneceğiz.
‫Şimdi, merminin ortaya çıkması hakkında konuşalım.
‫Bu, C++ tarafında yapmak istediğimiz bir şey.
‫Dünyada dinamik olarak yeni nesneler oluşturmak için C++ fonksiyonlarını çağıracağız.
‫Şimdi C++ tarafında bir nesne üretiyoruz, ancak mermi sınıfımızın planına dayalı bir nesne üretmek
‫istiyoruz.
‫Bunun nedeni, ek bilgiler içeren A Projectile C++ sınıfını temel alan bir planımızın
‫olmasıdır.
‫Özellikle, bu ağ özelliği ayarlanmıştır.
‫Statik ağ bileşenimiz için ağı seçtik.
‫Yani sadece C++ sürümünü ortaya çıkaramayız.
‫Bu ağı elde etmek için blueprint versiyonunu ortaya çıkarmamız gerekiyor.
‫Öyleyse soru şu: C++'da bir blueprint'e dayanan bir nesneyi nasıl ortaya çıkarırız?
‫Şimdi PT Subclass adı verilen bir şey öğreneceğiz, bu bir şablon.
‫Birçok şablon gibi, köşeli parantezler de bir tür gerektirecektir.
‫Bu nedenle PT alt sınıfının kullanılması bir tür parametresi gerektirir.
‫Bu da U sınıfı adı verilen bir şeyi depolayan bir değişkene sahip olmamızı sağlar.
‫U sınıfı bir sınıf türünü temsil eder, ancak aynı zamanda unreal engine'in yansıtma sistemiyle etkileşime girme yeteneğine de
‫sahiptir.
‫Yansıma derken, C++ ve blueprint tarafı arasında bilgi alışverişini kastediyorum.
‫PT sub class of, adından da anlaşılacağı gibi, aktardığımız türe göre bir sınıfı veya seçilen bu türün bir alt
‫sınıfını temsil eden bir değişkeni saklamamızı sağlar.
‫Bu, bir tip seçebileceğimiz ve t alt sınıfının o tipi veya ondan türetilen herhangi bir tipi temsil eden bir u sınıfı tutabileceği
‫anlamına gelir.
‫Ve bu, türe dayalı planları da içerir.
‫Şimdi bu t alt sınıfının nasıl çalıştığını görelim.
‫Tamam.
‫Burada base pom'a geri döndüm ve base pod'da olmamın nedeni bu merminin hem tank hem de kule
‫sınıflarında olmasını istememiz.
‫Bu sınıfların her ikisi de mermi üretecek.
‫Bu yüzden burada bir t alt değişken sınıfı istiyorum.
‫Bu yüzden t sub class of diyeceğim ve köşeli parantezlerin içine bir tür girmemiz gerekiyor.
‫Artık açılı parantezler içinde bile şu şekilde bildirimde bulunabiliriz.
‫Ve türü bir mermi yapacağım.
‫Bunun nedeni, projectile sınıfını yaratmış olmamız ve türünün bir projectile olmasıdır.
‫Bu değişkeni oluşturacağım ve ona projectile class adını vereceğim.
‫Şimdi, bu bize bir sınıf tipini temsil eden bir C++ değişkenine sahip olmamızı sağlayacak ve tip bir mermiye,
‫hatta buna dayalı bir blueprint sınıf tipine dayalı olabilir.
‫Şimdi ona bir U özelliği vereceğim.
‫Bunu düzenleyebilmek istediğim için, en azından varsayılan planda, bunu varsayılanları
‫düzenle yapacağım.
‫Ancak şimdi buna bir kategori verebiliriz.
‫Bunu savaş denilen bir kategoriye koyacağım.
‫Şimdi devam edelim ve bunu derleyelim.
‫Tamam, editöre geri döndüm ve blueprints klasörüne ve oradan da Pons klasörüne
‫gideceğim.
‫BP -- tankını açacağım ve tam plan düzenleyicisini açacağım.
‫Şimdi, ayrıntılar paneline bakarsam, çatışmayı arayabilirim.
‫İşte burada.
‫Ve işte mermi sınıfı değişkeni.
‫Bu, mermi sınıfı olarak adlandırdığımız alt sınıftır.
‫Şimdi burada ayarlayabileceğimize ve bir açılır menü kullanarak ayarlayabileceğimize dikkat edin.
‫Açılır menüye tıklarsak üç seçeneğimiz olur.
‫Bunu none olarak ayarlayabiliriz, ki bu varsayılan olarak ayarlandığı şeydir, bu da temelde bir null pointer olduğu anlamına gelir.
‫Ya da mermi veya BP mermisi olarak ayarlayabiliriz.
‫Bu alt sınıfın yapmamıza izin verdiği şey, bu mermi sınıfını mermiye dayalı belirli bir türe ayarlamaktır,
‫çünkü değişkeni oluştururken seçtiğimiz tür budur.
‫Şimdi mermi buraya.
‫Bu, C++'da mermi olarak adlandırılan C++ sınıfıdır.
‫Bu bir mermi, ancak BP mermisi C++ mermi sınıfını temel alan bir plan ve bunu seçebiliyoruz.
‫Ve şimdi mermi sınıfı BP mermi türüne ayarlandı.
‫Şimdi, bu bir bileşen değil ve bir BP mermi nesnesi de değil.
‫Öyle bir şey değil.
‫Bir türü, daha spesifik olarak bir U'yu depolar.
‫Sınıf tipi.
‫Ve dediğim gibi, sınıfınız yansımanın C++ ve planlar arasında çalışmasını sağlayan yerleşik işlevselliğe sahiptir.
‫C++ ve planlar arasında bilgi akışı olabilir.
‫Artık BP mermi plan tipine ayarlanmış bir PT alt sınıfı olan mermi sınıfımız var.
‫Öyleyse neden bir değişken alt sınıfı oluşturmak için bu kadar zahmete girelim?
‫Pekala, spawn actor işlevinin nasıl çalıştığını tartışmamız gerekiyor.
‫Spawn actor yeni dünya sınıfına ait bir işlevdir.
‫Yani dünyayı ele geçirirsek, Spawn aktörünü çağırabiliriz.
‫Spawn actor ise başka bir şablon işlevidir ve varsayılan alt nesne oluşturmaya benzer şekilde yeni nesneler oluşturmak
‫için tasarlanmıştır.
‫Ancak varsayılan alt nesne oluşturmak bileşen oluşturmak için tasarlanmıştır ve bunu yalnızca belirli bir sınıf
‫için yapıcıda kullanabiliriz. spawn actor, oyun çalışırken çalışma zamanında çağrılabilir ve aktörler oluşturabilir.
‫Şimdi bu bir şablon, bu yüzden bir tür gerektiriyor.
‫Bir mermi ortaya çıkarmak istiyorsak, C++ sınıf türünü buraya bir mermi olarak aktarırız.
‫Bu, C++'da spawn actor işlevi tarafından döndürülen C++ sınıfıdır.
‫Şimdi parantezler, U sınıfı da dahil olmak üzere bir dizi parametre alır.
‫Şimdi bu fonksiyonun farklı giriş parametreleri alan birden fazla aşırı yüklemesi vardır.
‫Belki de en basit olanı bir U sınıfı, A konumu ve bir rotasyon alan versiyonudur.
‫U.
‫Sınıf, ortaya çıkacak türü temsil eden şeydir.
‫Bu, ortaya çıkarılan nesnenin gerçek türüdür.
‫Bu bir plan sınıfı olabilir.
‫Konum, nesnenin nerede oluşturulacağını belirten bir F vektörüdür ve rotasyon, nesnenin rotasyonunu belirtir.
‫Sözdiziminin bir örneği şuna benzer.
‫Spawn aktörünü sınıf türünü belirterek çağırır ve ardından bu u sınıfı bilgisini konum vektörü ve
‫rotasyon döndürücüsü ile birlikte iletiriz.
‫Bir saniyeliğine sınıfınızdan bahsedelim.
‫Şimdi, söylediğimiz gibi, sınıfınız bir sınıf türünü temsil eder.
‫Spawn actor'ü çağırdığımızda, spawn actor işlevine doğacak nesne hakkında bilgi sağlamak
‫için bir U sınıfı iletiriz.
‫Evet, köşeli parantezler içinde bir tür girdik, ancak bu sadece Spawn aktörüne C++ türünü oluşturmasını söyler.
‫Oysa sizin sınıfınız daha fazla bilgi içerir.
‫Diyelim ki bir mermiye dayalı bir plan oluşturduk ve planda statik ağ bileşeni için statik
‫ağ seçmek gibi bazı özellikler ayarladık.
‫Şimdi eğer sadece ham bir C++ sınıfı ortaya çıkarırsak, o zaman bu statik ağ yeni ortaya çıkan mermi nesnesinde
‫ayarlanmayacaktır.
‫Esasen, görünmez yeni bir aktör ortaya çıkarmış oluruz.
‫Ancak, yeni bir sınıf değişkeni bir plan sınıfını temsil edebilir.
‫Sınıfınız bize C++ tarafında bir blueprint, sınıf tipi ve spawn'ı temsil eden bir değişkene sahip
‫olma yeteneği veriyor.
‫Actor bu sınıfı bir girdi argümanı olarak alabilir, böylece bu yeni sınıf tarafından temsil edilen plan temelinde
‫yeni bir nesne oluşturabilir.
‫Dolayısıyla yeni bir merminin statik ağ özelliği ayarlanacaktır çünkü ham C++ sınıfına değil,
‫blueprint'e dayalı yeni bir nesne oluşturuyoruz.
‫Bu nedenle alt sınıfımızı oluşturduk çünkü yeni bir sınıfı saklayabilir ve BP -- tank
‫planımızdan BP mermisine eşit olarak ayarlayabildik.
‫Artık aktörlerin nasıl ortaya çıkacağını biliyorsunuz.
‫Spawn aktörü yeni dünya sınıfına ait.
‫Yani get world'ü çağırır ve basitçe Spawn aktörünü çağırırsanız, bu işlev için girdi gereksinimlerini
‫biliyorsunuzdur, C++ türünü köşeli parantezler içinde geçirirsiniz ve parantezler içinde bir konum ve bir dönüş sınıflandırırsınız.
‫Meydan okumanız için, mermiyi ortaya çıkaracaksınız, bunu ateşleme fonksiyonunda yapacaksınız.
‫Bu yüzden get world spawn aktörünü çağırın ve köşeli parantez içinde bir mermi geçirin.
‫Bu, projectile için başlık dosyasını eklemeniz gerekeceği anlamına gelir.
‫Bunu unutmayın ve yeni değişken mermi sınıfımızı parantez içindeki U sınıfı giriş parametresi olarak
‫kullanın.
‫Şimdi bir yere ve rotasyona ihtiyacımız var.
‫Hem konum hem de rotasyon için merminin ortaya çıkış noktasını kullanacaksınız.
‫Mermi doğma noktası bileşeninden.
‫Bu değerlere erişmek için get component location ve get component rotation öğelerini çağırabilirsiniz.
‫Bu yüzden videoyu duraklatın ve şimdi yangın işlevinde spawn aktörünü çağırın.
‫Tamam.
‫Şimdi yangın fonksiyonunu tanımladığımız Base Pond CP'ye gidelim.
‫Şimdi burada hata ayıklama küresi çiziyoruz.
‫Artık buna ihtiyacımız olmayacak.
‫Bu yüzden bu fonksiyon çağrısını sileceğim ve bunun yerine burada Spawn aktörünü çağıracağım.
‫Artık merminin ortaya çıkma noktası konumuna zaten sahibiz.
‫Bu yerel değişkeni basitçe konum olarak yeniden adlandıracağım ve yeni bir F döndürücü oluşturacağım.
‫Rotasyon deniyor.
‫Ve bunu da merminin ortaya çıktığı noktadan alacağım.
‫Bu yüzden mermi doğma noktası bileşen rotasyonu olacak.
‫Şimdi elimde merminin ortaya çıkacağı konum ve rotasyon var.
‫Şimdi get world diyebilmek için spawn aktörünü çağırmam gerekiyor.
‫Ve bu fonksiyondan elde ettiğim dünyadan spawn aktörünü çağırabilirim.
‫Şimdi bunun köşeli parantezleri ve parantezleri var, değil mi?
‫Yani köşeli parantezler içinde bir mermi kullanmam gerekiyor.
‫Ve bir mermi kullandığımız için, bunun başlığını eklememiz gerekiyor.
‫Bu yüzden burada, hata ayıklama yardımcılarını kaldıracağım, çizeceğim ve mermi ile değiştireceğim.
‫Şimdi bu tür de dahil edildi.
‫Şimdi U sınıfına ihtiyacımız var ve H'nin mermi sınıfına sahip olduğuna dayanarak, bunu U sınıfı olarak kullanabiliriz.
‫Bu yüzden mermi sınıfına geçeceğiz.
‫Şimdi, son olarak, konumu ve rotasyonu aktarabiliriz ve bu, spawn actor işlevini yerine getirecektir.
‫Şimdi devam edelim ve bunu derleyelim, burada editöre geri döndük ve oynatmayı test edebiliriz.
‫Şimdi gidip tıklayacağım ve kontrol edeceğim.
‫Yeni bir mermi ürettik.
‫Mermiyi namlumuzun ucuna yerleştiriyoruz ve mermi havada asılı kalıyor, bu da
‫pek doğru görünmüyor.
‫Ama sorun değil.
‫Bu birinci adım.
‫İlk olarak mermiyi ortaya çıkarmalıyız, bir sonraki adım olarak mermi gibi davranmasını sağlamalıyız.
‫Yani özetle, artık mermiler üretiyoruz.
‫Bu büyük bir dönüm noktası.
‫Ancak, henüz tam olarak mermi değiller.
‫Orada öylece duruyorlar ve mermilerin havada uçması gerekiyor.
‫Bir sonraki videoda, mermilerimizin gerçekten havada uçmasını nasıl sağlayacağımızdan bahsedeceğiz,
‫böylece mermi gibi davranacaklar.
‫Yakında görüşürüz.