‫Hey.
‫Tekrar hoş geldiniz.
‫Şimdi mermimiz var ve isabet olayları ürettiğini biliyoruz, bu yüzden mermi gerçekten hedefimize
‫çarptığında bir şeyler yapmamız gerekiyor.
‫Şimdi, bu hasar vermeyi içerecek, bu da sağlığı takip etmek için bir yola ihtiyacımız olduğu anlamına geliyor.
‫Bu yüzden sağlık ve hasarı işlemek için sağlık bileşeni adı verilen bir sınıf oluşturacağız.
‫Bu işlevselliğin kendi sınıfına sahip olmasının nedeni, onu tank ve kule gibi farklı sınıflar için
‫yeniden kullanabilmemizdir.
‫Şimdi bu sağlık bileşenini tartışalım.
‫Artık sahne bileşeni sınıfını kullanmaya aşinayız.
‫Bu sınıf, aktör bileşeni adı verilen bir sınıftan türetilmiştir.
‫Aslında, işte kullanım sahnesi bileşeni belgeleri.
‫Ve miras hiyerarşisinde, bunun ebeveyninin siz aktör bileşeni olduğunu görebilirsiniz.
‫Şimdi bir bileşen olarak hareket ediyorsunuz, gördünüz bileşeninden daha temeldir.
‫Dönüşümü yok.
‫Yani konum, döndürme ve ölçek, aktör bileşeninin sahip olduğu bir şey bile değildir.
‫Bağlanmayı desteklemiyor.
‫Aktif bir bileşeni, örneğin statik bir ağ bileşenine veya bir kapsül bileşenine ekleyemezsiniz.
‫Bu sadece oyuncuya ait bir şey.
‫Ve görsel bir temsil ya da dönüşüm olmadığı için, onu herhangi bir şeye bağlamamız gerekmiyor.
‫Bunu, aslında bir dönüşüme sahip olan ve kendisini diğer bileşenlere ekleyebilen veya diğer bileşenlerin
‫kendisine eklenmesini sağlayabilen use scene bileşeniyle karşılaştırın.
‫Yani sağlığı takip etmek ve hasarla ilgilenmek için bunların hiçbirine ihtiyacımız yok.
‫Yani bunun için mükemmel olacak bir bileşeni harekete geçiriyorsunuz.
‫Şimdi düzenleyiciye geri dönelim ve yeni eylemimizi bir bileşen sınıfı haline getirelim.
‫Bu yüzden araçlara ve yeni C++ sınıfına gideceğiz.
‫Ve aşağı kaydırırsam aktör bileşenini görebiliyorum.
‫Seçeceğimiz şey bu.
‫Şimdi dikkatli ol.
‫Aktör seçmeyin.
‫Bu farklı bir sınıf.
‫Aslında daha büyük bir sınıftır ve aktör bileşeninin sahip olduğundan çok daha fazla şeye sahiptir.
‫Özellikle aktör bileşenine ihtiyacımız var, bu yüzden onu seçin, ileri'ye tıklayın.
‫Buna basitçe Sağlık Bileşeni diyebiliriz.
‫Sınıf Oluştur'a tıklayalım.
‫Şimdi burada yeni sağlık bileşenlerimiz ve CP dosyalarımız var ve burada sağlık bileşeninizin, yeni oluşturduğumuz
‫sınıfın sizden türetildiğini görebilirsiniz.
‫Bu yüzden burada doğru tipe sahip olduğunuzdan emin olun ve U'sunda olduğunu göreceksiniz.
‫Sınıf makrosu.
‫Bu meta nerede olduğunu belirtir ve planların tablo bileşenini ortaya çıkardığını söyler.
‫Bu, bu bileşeni doğrudan planlara eklememizi sağlayacak olan şeydir, şimdi yapacağımız
‫şey de budur.
‫Yeni sağlık bileşeni sağlıkla ilgilenecek, bu da birkaç değişkene ihtiyacımız olduğu anlamına geliyor.
‫Devam edelim ve bunları ekleyelim ve ben bunları özel yapacağım.
‫Şimdi devam edelim ve korumalı bölümün hemen altına özel bir bölüm ekleyelim ve birkaç sağlık değişkeni
‫ekleyelim.
‫Şimdi, bunlar şamandıra olacak ve ben ilkine Max Health adını vereceğim.
‫Bu, sahip olabileceğimiz maksimum sağlık miktarı olacaktır ve bunu 100 F gibi varsayılan bir
‫değere ayarlayabiliriz.
‫Şimdi, Maksimum sağlığa ek olarak, mevcut sağlık değeri olacak bir sağlık değerimiz olacak
‫ve hasar aldıkça değişen şey bu olacak.
‫Öyleyse başka bir şamandıra yapalım ve buna basitçe sağlık diyelim.
‫Şimdi sağlığı sıfır F olarak başlatabilir ve ardından değerini ayarlayıp oynamaya başlayabiliriz.
‫Bunu yapmamızın nedeni, Max Health'in ayrıntılar panelinden ayarlamamıza olanak tanıyan kendi you özelliğine
‫sahip olacak olmasıdır.
‫O halde buna bir U özelliği verelim ve herhangi bir yerde düzenlenmesini sağlayalım.
‫Bu şekilde geliştirirken değiştirebiliriz.
‫Ve sonra sağlık bileşenlerinde CP burada ve oyuna başlayın, sağlığı maksimum sağlık değerine eşit olarak ayarlayabiliriz.
‫Bu şekilde oyun başladığında, ayrıntılar panelinde değiştirdikten sonra bile sağlık maksimum sağlık değerine
‫sahip olacaktır.
‫Tamam, bunu derleyelim ve burada editörde BP -- tankı açacağım ve tam plan editörünü
‫açacağım.
‫Ve şimdi bu sağlık bileşenini bileşenler paneline ekleyebilirim.
‫Bu yüzden Ekle'ye tıklayacağım ve Sağlık'ı arayacağım.
‫Ve burada sağlığı görüyoruz.
‫Şimdi, buna C++'da sağlık bileşeni adını verdik.
‫Ve aslında, açılır pencere bunun sağlık bileşeni olarak adlandırıldığını gösteriyor.
‫Dolayısıyla, burada gösterirken bu bileşen parçasını çıkarır.
‫Statik ağ bileşenlerini veya kapsül bileşenlerini aradığınızda, bunlar için de burada bileşen kelimesini
‫görmediğinizi fark etmiş olabilirsiniz.
‫Şimdi sağlık bileşenimize tıklayın ve sağlık bileşeni altında maksimum sağlığa sahip olduğumuzu ve bunun 100
‫olarak ayarlandığını ve bu değişkeni göstermediğimiz için sağlığı görmediğimizi göreceksiniz.
‫Yani şimdi BP -- tankının bir sağlık bileşeni var ve tankın bu sağlık bileşenine, BP -- tankına sahip olduğu
‫söyleniyor.
‫Bu sağlık bileşeninin sahibidir.
‫Derleyip kaydedelim ve kapatıp BP piyon taretini açalım ve tam plan düzenleyicisini açalım ve havuz taretine
‫de bir sağlık bileşeni ekleyebiliriz.
‫Bileşen ekle'ye tıklayalım, sağlık'ı arayalım ve sağlık'ı seçelim.
‫Ve şimdi kulede bir de sağlık bileşenimiz var.
‫Bu yüzden bunları derleyip kaydedeceğim ve hepsini kapatacağım ve kaydedeceğim.
‫Şimdi bir sağlık bileşenimiz var ve bunu farklı sınıflarla yeniden kullanabilmemiz için bir sağlık bileşenine sahip
‫olmak istediğimizden bahsetmiştik.
‫Yani dünyada bir piyonumuz varsa, örneğin kulemiz, kendi sağlık bileşenine sahip olacak ve sonra tankımız
‫kendi sağlık bileşenine sahip olabilir.
‫Şimdi, mermimiz bunlardan biriyle etkileşime girdiğinde, örneğin bir vuruş olayı oluşturduğunda,
‫bu şeylerden birine çarptığında, piyonlarımız sağlık bileşenindeki bazı işlevleri tetikleyebilir
‫ve bu sağlık değerlerini değiştirebilir.
‫Sağlık işlevselliğimizi bir bileşene yerleştirmek ve daha sonra bu bileşeni bir sınıfa eklemek, örneğin
‫sağlık işlevselliğini temel piyon sınıfına yerleştirmek ve bunu tank ve kulede miras almak
‫gibi alternatiflere göre bazı avantajlara sahiptir.
‫Gördüğünüz gibi bu, tank ve kule sınıflarımızı küçük tutmamıza ve yalnızca bu sınıflar için belirli işlevlerle ilgilenmemize
‫olanak tanıyor.
‫Oysa sağlık bileşeni, tank veya kule gibi davranmayan şeyler gibi başka herhangi bir aktöre eklenebilir.
‫Örneğin, yeterince hasar alır almaz yıkılabilecek yıkılabilir bir duvar yapabiliriz.
‫Şimdi bunu nasıl gerçekleştirebileceğimiz hakkında biraz konuşalım.
‫Unreal Engine yerleşik hasar işlevselliğine sahiptir ve hasar sistemi aslında oldukça karmaşıktır.
‫Oyunumuzdaki herhangi bir aktör, bir dizi hasar olayını miras alır ve bunlardan biri herhangi bir hasar aldığında çağrılır.
‫Bu, tıpkı bileşen isabetinde olduğu gibi çok noktaya yayın temsilcisidir.
‫Şimdi piyonlarımıza sağlık bileşenleri ekleyeceğiz ve bunlar U'muzu temel alacak.
‫Sağlık bileşeni sınıfı.
‫Piyonlarımızın bu hasar alma delegesini miras alacağını bildiğimizden, sağlık bileşeni sınıfında
‫kendi özel işlevimizi oluşturursak, bu işlevi bir geri arama olarak kullanabilir ve herhangi
‫bir hasar alma delegesine bağlayabiliriz.
‫Böylece bir hasar olayı oluştuğunda, herhangi bir hasar delegesi yayın yapabilir ve çağırma
‫listesinde ona bağlı olan tüm işlevler çağrılır.
‫Bir sonraki soru, bu temsilcinin yayın yapmasını nasıl sağlayacağımızdır?
‫Bir hasar olayı oluşturmak için bir yola ihtiyacımız var.
‫Oyun istatistiklerinizde tam da bunu yapacak bir işlev var ve buna hasar uygula deniyor.
‫Hasar uygulamak için oyun statiklerinizdeki bu statik işlevi kullanırsak, hasar uygulamak, hasar gören
‫aktör de dahil olmak üzere bir dizi parametre alır.
‫Dolayısıyla, hasar uygula dediğimizde, herhangi bir hasar alma delegesindeki aktörler ateşlenecek ve yanıt olarak bu geri
‫arama işlevi çağrılacaktır.
‫Yani hasar uygulamak, hasar olayını oluşturan şeydir.
‫Tüm bunları ayarlamak için üç adımımız var.
‫İlk olarak, bir geri çağırma işlevi oluşturun ve bu işlev herhangi bir hasar alma durumuna bağlı olacağından, doğru
‫giriş parametrelerine sahip olmalıdır, böylece herhangi bir hasar alma durumu onu çağıracak ve hasar olayıyla
‫ilgili tüm bilgileri aktaracaktır.
‫İkinci adım, bu geri aramayı temsilciye bağlamaktır.
‫Dinamik ekle işlevini kullanarak on component hit delegate ile bunu nasıl yapacağımızı gördük.
‫Biz de burada aynı şeyi yapacağız.
‫Üçüncü adım ise, oyun statik fonksiyonu olan uygulanan hasarı çağırarak hasar olayını oluşturmaktır.
‫Öyleyse koda geri dönelim ve bunu ayarlamaya başlayalım.
‫Tamam.
‫Burada sağlık bileşenindeyiz ve bir geri arama işlevi ekleyeceğiz.
‫Şimdi, bu geçersiz olabilir ve buna istediğimiz adı verebiliriz.
‫Buna hasar alındı diyeceğim.
‫Ve bunu bir delegeye bağladığımız için, o delegeye uygun doğru giriş parametrelerine sahip
‫olması gerekir.
‫Şimdi on take any damage delegate'e bağlı fonksiyonlar için giriş parametre listesi aşağıdaki gibi olmalıdır.
‫İlki, Hasarlı Aktör adı verilen bir aktör işaretçisidir ve kulağa böyle gelmektedir.
‫Hasarı alan aktör.
‫Sırada hasar adı verilen bir değişken vardır ve bu gerçek hasar miktarıdır.
‫Şimdi, sırada, hasar türü adı verilen bir hasar türü işaretçimiz var.
‫Bu giriş parametresine sahip olmamızın nedeni, Unreal Engine'in hasar türleri kavramına sahip olmasıdır.
‫Sahip olabileceğiniz hasar türüne bağlı olarak farklı şeyler yapmanızı sağlayacak ekstra verilere sahip özel hasar
‫türleri oluşturabilirsiniz.
‫Yangın hasarı.
‫Zehir hasarı.
‫Patlayıcı hasar ve benzeri.
‫Ve her hasar türü için özel işlevsellik uygulamak istiyorsanız, bunu kendi özel hasar
‫türünüzde uygularsınız.
‫Şimdi kendi özel hasar türümüzü oluşturmuyoruz, ancak bu işlevi herhangi bir hasar alma temsilcisine
‫bağladığımız için, bu giriş parametrelerine sahip olması gerekir.
‫Bu yüzden buraya dahil ediyoruz.
‫Şimdi bir sonraki parametre bir A denetleyici işaretçisidir ve buna instigator ve Unreal Engine Damage
‫System denir.
‫Azmettirici, hasardan sorumlu olan kontrolördür.
‫Yani eğer hasara en nihayetinde bir piyonu kontrol eden bir oyuncu neden olduysa, o zaman azmettirici o piyona
‫sahip olan kontrolcüdür.
‫Her zaman bir kışkırtıcının olmasına gerek yoktur.
‫Eğer hiç olmasaydı, o zaman bu basitçe boş olurdu.
‫Ve şimdi kırmızı dalgalı çizgiler alıyorum, böylece fonksiyon için parantez içinde A denetleyici sınıfını bildirebiliyorum.
‫Şimdi son parametre bir A aktör işaretçisidir ve buna Damage Causer denir.
‫Bu, hasara neden olan gerçek aktördür.
‫Bu merminin kendisi olacaktır.
‫Bu hasar alma geri çağırma işlevini bildirdik ve tıpkı isabet halinde diğer geri çağırma işlevimiz gibi.
‫Bu bir u fonksiyonu olmalı.
‫Bu yüzden, herhangi bir hasar alma delegesine bağladığımızda çalıştığından emin olmak için
‫ona fonksiyon makrosu vereceğiz.
‫Ve şimdi bunu beyan ettiğimize göre, CPP dosyasında tanımlamaya hazırız.
‫Yani burada sağlık bileşenlerinde, CPP.
‫En altta, devam edip buna bir işlev gövdesi vereceğim ve işlevi sınıf adıyla tam olarak nitelendireceğim.
‫Ve şimdi bir geri arama var.
‫Şimdi bunu delegeye bağlamamız gerekiyor.
‫Ancak temsilci sağlık bileşeninde mevcut değildir, özellikle aktörlerde mevcuttur.
‫Bunu, bu bileşenin sahibi olan piyonun herhangi bir hasar alma delegesine bağlamak istiyoruz.
‫Peki bu bileşenin sahibine nasıl erişeceğiz ki temsilcilerinden birine bağlanabilelim?
‫Peki, bunu yapıp oynamaya başlayacağız ve bir bileşenin sahibine erişebilmemizin
‫yolu git owner fonksiyonudur.
‫Bunun üzerine gelirseniz, bir aktör işaretçisi döndürdüğünü görürsünüz.
‫Bu, bir bileşenin sahibi olan aktörün işaretçisidir.
‫Bileşenler piyonlar tarafından sahiplenilebilir, aktörler tarafından sahiplenilebilir, bu nedenle sahibini
‫bir aktör işaretçisi biçiminde döndürür.
‫Yani geri arama fonksiyonumuz var ve ikinci adımımız, sağlık bileşenine sahip olan piyonda var olacak
‫herhangi bir hasarı almak için delegeye bağlamaktır.
‫Geri aramaları temsilcilere bağlama deneyiminiz olduğundan, sağlık bileşeni sınıfındaki zorluğunuz
‫bu olacaktır.
‫Begin Play'de, alınan hasarı bileşenin sahibinde var olan herhangi bir hasar alma delegesine
‫bağlayacaksınız.
‫Yani bu temsilciye get owner işlevi aracılığıyla erişeceksiniz.
‫Başka bir deyişle, mal sahibini arayacaksınız ve bundan sonra herhangi bir hasar almak için erişeceksiniz.
‫Ve sonra oradan dinamik ekle'yi kullanarak geri aramaları delegelere nasıl bağlayacağınızı biliyorsunuz, eğer
‫takılırsanız, vuruşta geri aramayı bileşen vuruşunda delegeye nasıl bağladığımıza bakın, videoyu duraklatın ve alınan hasarı
‫şimdi herhangi bir hasar al delegesine bağlayın.
‫Tamam.
‫Sağlık bileşenine geri döndük ve geri arama fonksiyonumuzu bağlamaya hazırız.
‫Bu yüzden burada oynamaya başlayacağız, git owner fonksiyonunu kullanarak sahibine erişeceğiz ve oradan
‫on, take any damage ve take any damage olarak adlandırılan delegeye erişmek için ok operatörünü kullanacağız
‫add dynamic fonksiyonuna sahiptir ve sadece bir kullanıcı nesnesi ve bir fonksiyon adı alır.
‫Şimdi kullanıcı nesnesi, işlevi bağladığımız nesnedir.
‫Bu, üzerinde geri arama işlevi olan sınıftır ve bu da bu olacaktır.
‫Ve son olarak geri arama fonksiyonumuz var, bu da siz olacaksınız.
‫Alınan sağlık bileşeni hasarı.
‫Şimdi operatörün adresini hatırlamamız gerekiyor çünkü bu aslında fonksiyonun bir adresini alıyor.
‫Artık alınan hasar, herhangi bir hasar almaya bağlıdır ve bu delegenin çağrı listesine eklenir.
‫Dolayısıyla, hasar olayları oluşturduğumuzda, bu delegeden bir yayın alacağız ve bu da hasar
‫alma işlevinin çağrılmasıyla sonuçlanacak.
‫Özetle, kendi sağlık bileşenimizi oluşturduk ve bunlardan birini hem tank planına hem
‫de kule planına ekledik.
‫Alınan Hasar adında bir geri arama işlevi oluşturduk ve bunu herhangi bir hasar alma delegesine bağladık.
‫Bir sonraki adım, herhangi bir hasar alma delegesinin yayınlanmasıyla sonuçlanacak bir hasar olayı oluşturmaktır,
‫böylece geri arama işlevimiz hasar alındı yanıt olarak çağrılacaktır.
‫Bunu bir sonraki videoda ayarlayacağız.
‫Yakında görüşürüz.