‫Hey.
‫Tekrar hoş geldiniz.
‫Şimdi kendimizi herhangi bir hasar aldığında delegeye bağlı bir geri arama işlevi ile ayarladık.
‫Son adım ise bu hasar olayını gerçekten oluşturmaktır.
‫Ve bunu mermimiz bir şeye çarptığında yapmak istiyoruz.
‫Bu temsilci için yayın yaptıktan sonra, vurduğumuz şeye hasar uygulayabiliriz.
‫Ve bu olayı, oynanış statiği sınıfına ait olan uygulanan hasarı kullanarak yayınlayacağız.
‫Şimdi uygulanan hasar fonksiyonuna bir göz atalım.
‫Şimdi burada uygulanan hasarın belgeleri, belirtilen aktöre genel hasarla zarar verdiğini söylüyor.
‫Yani bu, hasar uygulamak için genel bir işlevdir.
‫Bu delege için yapılan yayınlara karşılık olarak ne yapacağımız ise bize kalmış.
‫Şimdi burada oyun statiği eklememiz gerektiğini görüyoruz ve söz diziminde birkaç girdi parametresi görüyoruz.
‫Şimdi aslında parametrelerin bazı tanımlarını alıyoruz.
‫Aşağı kaydırmaya devam edersek, hasarlı aktörün iyi olduğunu görürüz, hasar görecek aktör temel
‫hasar, burada gerçekten açıklayıcı belgeler uygulamak için temel hasardır.
‫Teşekkürler.
‫Epik olay başlatıcısı, bu hasara neden olmaktan sorumlu olan denetleyicidir.
‫Ve örneğin, silahı ateşleyen oyuncu yazıyor.
‫Oyuncu derken, bu kontrol cihazından bahsediyor.
‫Bir de hasara neden olan var, yani hasara gerçekten neden olan aktör.
‫Patlayan el bombası diyor.
‫Bizim durumumuzda, patlayan mermi olacak.
‫Ve son olarak, verilen hasarı tanımlayan bir sınıf olan hasar türü sınıfımız var.
‫Şimdi sözdizimi bölümüne geri dönersek, bu girdilerin türlerini görebiliriz ve hasar türü sınıfının bir
‫alt sınıfı olduğunu ve TW alt sınıfının U sınıfı türündeki bir girdi parametresini karşılayacağını daha
‫önce görmüştük.
‫Hasar uygula dediğimizde, kullanmak istediğimiz hasar türünü temsil eden bir U sınıfı aktarabiliriz.
‫Bu giriş parametresini nasıl karşılayacağımızı birazdan konuşacağız.
‫Bu yüzden ton oyun statiği işlevi, uygulanan hasar birkaç giriş parametresi alacaktır.
‫Şimdi bu fonksiyonu çağırdığımızda uygun değerleri nasıl aktaracağımıza dair bir strateji belirleyelim,
‫öncelikle hasarlı aktöre ihtiyacımız olduğunu gördük.
‫Peki, hasar uygulamak istediğimiz mermi CP'sine geri dönelim.
‫Bunu burada yapmak istiyoruz ve artık bu kayıtlara ihtiyacımız yok.
‫Bu yüzden basitçe bunları kaldıracağım ve vuruşta geri çağrımızın çağrıldığında bazı girdiler aldığını
‫fark edeceğim.
‫On component hit delegate yayınlandığında, başka bir aktörümüz olduğunu göreceğiz.
‫Yani merminin isabet ettiği aktöre erişimimiz var ve bu da hasar vermek istediğimiz
‫aktör.
‫Böylece ilk giriş parametresi halledilmiş olur.
‫Diğer aktör olacak.
‫Daha sonra, hasar miktarına ihtiyacımız var, bu da mermimizin bir hasar değişkenine sahip olması gerektiği anlamına geliyor, böylece
‫ne kadar hasar uygulayacağımızı biliyoruz.
‫Öyleyse neden mermi FX'ine girip bir hasar değişkeni eklemiyoruz ve bu bir float olabilir.
‫Böylece bu hasarı basitçe çağırabilir ve 50 F gibi bir değere başlatabiliriz ve bu muhtemelen denemek
‫isteyeceğimiz bir şey olduğundan, bunu ortaya çıkarmak ve herhangi bir yerde düzenlemesini sağlamak
‫için buna bir U özelliği verebiliriz.
‫Artık hasar al dediğimizde girmemiz gereken bir hasar miktarımız var.
‫Şimdi bir sonraki parametre başlatıcıdır ve bunun A tipi denetleyici olduğunu gördük.
‫Peki kontrolörü nasıl alacağız?
‫get owner fonksiyonu ile belirli bir bileşenin sahibini alabileceğimizi gördük.
‫Ve bu, belirli bir bileşene sahip olan aktörü döndürür, bu mermiler dinamik olarak üretilir.
‫Bu yüzden, eğer get owner'ı çağıracaksak, sahibin ayarlandığından emin olmamız gerekir, şimdi bunları
‫temel piyondan üretiyoruz.
‫Yani eğer temel piyona girersek.
‫CP İşte aktörü ortaya çıkardığımız satır, ancak Spawn Actor aynı zamanda ortaya çıkarılan aktöre bir işaretçi döndürür,
‫böylece bunu yerel bir değişkende saklayabiliriz.
‫Örneğin, auto projectile diyebilir ve spawn actor'dan dönen değeri atayabiliriz.
‫auto'ya aşina değilseniz, derleyicinin bu yeni değişkene atanacak türü bulmasını
‫sağlar.
‫Eğer üzerine gelirseniz, A tipi mermi işaretçisine sahip olduğunu göreceksiniz çünkü spawn actor
‫fonksiyonundan imzaladığımız şey budur.
‫Yani bu, tam buraya bir mermi işaretçisi koymuşuz ve şimdi yeni ortaya çıkan mermiye erişebiliyoruz.
‫Bunu yapmak istememizin nedeni de sahibini belirlemek istememizdir.
‫Sahibinin onu ortaya çıkaran piyon olarak ayarlandığından emin olmak istiyoruz.
‫Yani mermi diyebiliriz.
‫Ve bunun için set sahibi adı verilen bir işlev vardır.
‫Set owner bir aktör alır ve bunu aktaracağız, böylece piyonlarımızdan biri bir mermi ürettiğinde, bu
‫mermilerin sahibini ayarlayacaktır.
‫Böylece, ileride get owner'ı çağırırsak, bu merminin sahibi olan
‫sınıfın örneğini alacağız.
‫Burada, projectile DHCP'de, get owner fonksiyon çağrımız var ve bunu yerel bir değişkende saklayabiliriz.
‫Devam edip tekrar auto kullanacağım ve buna sahibim diyeceğim ve get sahibim tarafından döndürülen sonuca ayarlayacağım.
‫Artık sahibinin değerini saklayan yerel bir aktör işaretçimiz var.
‫Şimdi bu aktörden instigator controller'a erişebiliriz.
‫Şimdi, bunu yapmadan önce, sahibimin boş olmadığından emin olmak için kontrol etmek iyi bir fikirdir.
‫Yani sahibim null ise eşittir null işaretçisi diyeceğim, o zaman basitçe geri döneceğim.
‫Şimdi, eğer if gövdenizde bunun gibi tek bir ifade varsa, bilmiyorsanız küme parantezleri olmadan
‫aynı satıra yerleştirebilirsiniz.
‫Ve null pointer, C++'da bir pointer'ın null pointer olup olmadığını kontrol etmenizi sağlayan bir anahtar sözcüktür.
‫Yani sahibim null ise, fonksiyondan erken çıkacağız ve başka bir şey yapmayacağız.
‫Şimdi, söylediğim gibi, instigator controller'ı sahibimden alabiliriz ve
‫get instigator controller adlı fonksiyonun kullanımı budur.
‫Bunun üzerine gelirsek, bir A denetleyici işaretçisi döndürdüğünü görürüz.
‫Basitçe auto kullanacağım ve bunu yerel bir değişkende saklayacağım ve bu değişkene sahibim instigator adını vereceğim.
‫Artık azmettirici olarak neyi geçireceğimizi biliyoruz.
‫Bir sonraki girdi hasara neden olandır ve bu, mermi için hasarı yapan aktördür.
‫Bu sadece bu olacak.
‫Ve geriye hasar türü olan son girdi parametresi kalıyor.
‫Ve bunun bir alt sınıf olduğunu gördük, bu da geçmek için uygun kullanım sınıfına ihtiyacımız olduğu anlamına geliyor.
‫N İşte size hasar türü için unreal engine belgeleri.
‫Hasar türünün, belirli bir hasar şeklini tanımlamak ve açıklamak ve çeşitli kaynaklardan gelen hasara verilen tepkileri
‫özelleştirmek için bir yol sağlamak amacıyla tasarlandığı belirtilmektedir.
‫Şimdi, hasarımızı özelleştirmeyeceğiz.
‫Sadece girdi parametresini karşılamamız gerekiyor, yani bu hasar tipi sınıfını temsil eden bir U sınıfı
‫değerine ihtiyacımız var.
‫Şimdi C++'da, hasar türü gibi belirli bir sınıfın YOU sınıfını almak istiyorsak, static class
‫adlı bir işlevi çağırabiliriz.
‫Bu, you nesne sınıfından miras alınır.
‫Elbette burada hasar türünü kullanacağız, dolayısıyla bu başlığa ihtiyacımız olacak.
‫Bu yüzden dokümantasyondan include satırını kopyalayacağım ve buraya projectile CP'nin üstüne yapıştıracağım
‫ve şimdi bu statik sınıf fonksiyonunun bir U sınıfı işaretçisi döndürdüğünü ve bu yeni sınıfın yeni hasar tipi C++ sınıfını
‫temsil edeceğini göreceksiniz.
‫Şimdi, hasar türünüze göre bir plan oluşturmadığımız ve bazı ekstra veriler ayarlamadığımız için, gerçekten
‫bir değişken alt sınıfına ihtiyacımız yok.
‫Bu durumda static class kullanabiliriz ve bu, bu türü temsil eden bir U sınıfı döndürecektir.
‫İstersek bunu bir değişkende saklayabiliriz ve ben buna hasar tipi sınıfı diyeceğim.
‫Ve bu, hasar uygulamak için son parametre olarak aktarabileceğimiz şeydir.
‫Artık hasar uygula işlevine aktarmamız gereken tüm bilgilere sahibiz.
‫Ancak bunu yapmadan önce, bu işlevi çağırmamızın uygun olduğundan emin olmak için birkaç kontrol yapmak
‫istiyorum.
‫Bu yüzden burada bir "eğer" ifadesi kullanacağım.
‫Öncelikle, diğer aktörün null olmadığından emin olmak istiyorum.
‫Bu yüzden buraya başka bir aktör yerleştireceğim.
‫Buraya bir ve işareti koyacağım, böylece diğer aktörün bu aktöre eşit olmadığından emin olmak için kontrol edebilirim.
‫Eğer mermi bizsek kendimize zarar vermek istemeyiz, şimdi başka bir uç yerleştireceğim
‫ve diğer aktörün sahibime eşit olmadığından emin olacağım.
‫Merminin sahibine zarar vermesi iyi olmaz.
‫Ve şimdi bu if deyiminin içine girersek, hasar uygula çağrısının uygun olduğunu biliyoruz, böylece
‫bunu yapabiliriz.
‫Ve bu sizin mücadeleniz olacak.
‫Bu yüzden yeni if deyimimizde vuruş fonksiyonunda oyun statiği hasar uygula fonksiyonunu çağırın.
‫Bu, oyun statiği için doğru başlığı eklemeniz ve hangi girdi parametrelerini geçireceğinizi bilmeniz gerektiği
‫anlamına gelir.
‫Bu yüzden videoyu duraklatın ve şimdi vuruşta hasar uygulamak için fonksiyon çağrısını ekleyin.
‫Tamam.
‫Burada mermi CP'deyim ve oynanış istatistikleri için başlık dosyasını dahil edeceğim ve Uygulamalı Hasar Dokümantasyon
‫sayfasından dahil edilenin kismet slash oynanış istatistikleri olduğunu görebiliriz.
‫Bunu buraya yapıştıracağım ve şimdi hasar uygula demeye hazırım.
‫Bu yüzden size oyun istatistiklerinin hasar verdiğini söyleyeceğim.
‫Şimdi parantezleri açar açmaz, bana ihtiyacım olan giriş parametrelerini hatırlatan bir açılır pencere
‫alıyorum.
‫İlki zarar gören aktör ve bu da diğer aktör olacak.
‫Şimdi diğer aktör yazacağız.
‫Hasar miktarına ihtiyacımız var ve bu hasarı 50 olarak ayarladığımız mermi FX'ine ekledik.
‫Bu yüzden sıradaki hasar ucunu geçeceğim.
‫Azmettiriciye ihtiyacımız var ve sahibim azmettiriciye sahip.
‫Bu yüzden sahibim olan kışkırtıcıyı pas geçeceğim.
‫Sırada hasara neden olan var.
‫Ve tabii ki, hasara neden olan merminin kendisidir.
‫Yani bunu geçeceğiz.
‫Ve son olarak, bir U sınıfı işaretçisinin bunu karşılayacağını bildiğimiz hasar türünün alt sınıfına ihtiyacımız
‫var ve bu yüzden hasar türü sınıfımız var.
‫Öyleyse hasar türü sınıfına geçelim.
‫Ve bununla birlikte şimdi hasar uygula diyoruz.
‫Yani bunu çağırdığımızda, hasar olayını oluşturacağız ve herhangi bir hasar alma delegesi buna yanıt olarak yayın
‫yapacak, bu da sağlık bileşenimizde alınan hasarın çağrılacağı anlamına geliyor.
‫Bu yüzden burada hasar tespitinde bir şeyler yapmamız gerekiyor.
‫Bu hasarı almak ve bu miktarı sağlıktan çıkarmak mantıklı olacaktır.
‫Ancak bunu yapmadan önce, hasarın sıfıra eşit ya da daha az olmadığından emin olmak istiyorum.
‫F Sıfır veya negatif bir değer gibi anlamsız bir değer uygulamadığımızdan emin olmak için hasarı
‫belgelemeden önce bu kontrolleri yapmak mantıklıdır.
‫Eğer durum buysa, basitçe geri döneceğiz.
‫Ve elbette, kurnaz olmak ve benim CP'de mermide yaptığımı yapmak isterseniz, dönüşü tam oraya yerleştirebiliriz.
‫Şimdi, bu çizgiyi geçersek, hasar pozitif bir değerdir, bu yüzden sağlığı alıp eksi eşittir hasar
‫kullanabiliriz.
‫Ve bunun çalıştığından emin olmak için, neden buraya bir euy günlüğü yerleştirmiyoruz?
‫Böylece Yui log günlüğü, geçici uyarı metni ve sağlık değerini yüzde F ve sağlık ile yazdırabiliriz ve bununla
‫derleyebiliriz.
‫Şimdi başarılı bir derleme ile editöre geri dönelim ve çıktı günlüğümüz açıkken oynat düğmesine
‫basalım.
‫Bakalım bir mermi tarafından vurulabilecek miyiz?
‫Ve işte başlıyoruz.
‫Sağlığımız şu anda 50'ye düştü ve tekrar vurulursak, epeyce vuruş olayı yaşadık çünkü mermiye
‫çok hızlı bir şekilde birçok kez çarpıyorduk.
‫Ama görüyoruz ki sağlığımız düzgün bir şekilde belgeleniyor.
‫Bu nedenle, sağlık sıfıra ulaştığında ölüm üzerine doğru davranışı uyguladığımızdan emin olmamız gerekir.
‫Ancak bu vuruş olayının birden fazla kez tekrarlanmadığından da emin olmamız gerekiyor.
‫Artık merminin bir şeye çarptığında yok edilmesi gerektiğini biliyoruz, bu nedenle isabet olayının spam yapılmasını
‫önlemenin en iyi yolu mermiyi yok etmektir.
‫Bu videoda yapacağımız son şey bu.
‫Mermiye hasar uyguladıktan hemen sonra, yapabileceğimiz şey merminin kendisini yok etmesini sağlamaktır ve
‫bu daha kolay olamazdı.
‫Basitçe destroy fonksiyonunu çağırıyoruz.
‫Editörde bir kez daha derledikten sonra devam edebilir ve bir mermi tarafından vurulup buna bakabiliriz.
‫Mermi gitmiş.
‫Yani zararını veriyor ve sonra ortadan kayboluyor.
‫Ve elbette kuleleri mermilerle patlatarak ve bu vuruş olaylarının tetiklendiğinden emin olarak kulelere
‫vurmayı da test edebiliriz.
‫Gördüğünüz gibi, bunu bir sürü mermiyle spamlayabilirim ve buradaki zavallı
‫kulenin sağlık değerinin çok, çok negatif hale geldiğini göreceğiz.
‫Özetle, hasar uygula işlevini çağırdık ve bu, herhangi bir hasar alma delegesi için bir yayınla
‫sonuçlandı.
‫Sağlık bileşeninde sağlığı belgeledik ve mermiyi yok ettik.
‫Şimdi hasarı hallettik.
‫Henüz ölümün icabına bakmadık.
‫Bu da gelecekteki bir videoda ele alacağımız konulardan biri olacak.
‫Yakında görüşürüz.