‫Merhaba ve hoş geldiniz.
‫Bu derste, sağlık sistemimizi animasyon planına bağlayacağız, böylece bu
‫karakteri ölene kadar çekebileceğim.
‫İçeri dalalım ve nasıl çalıştığını görelim.
‫Bu yüzden animasyon planındaki bu boolean'ın oyunumuzdan otomatik olarak ayarlanmasını istiyoruz.
‫Olay grafiğimize gidip bunun şu anda nasıl çalıştığına bakarsak, bunun gibi get velocity, get active,
‫transform gibi diğer özellikler, piyona gidiyoruz ve animasyonumuzu her güncellemek
‫istediğimizde üzerinde bir get fonksiyonu yapıyoruz.
‫Bu yüzden, oyuncumuzun ölü olup olmadığını öğreneceğimiz bu modeli takip etmek
‫istiyoruz.
‫Bunu yapmak için, C++'ımızdan bazı işlevleri, çağrılabilir bazı işlevleri ortaya çıkarmamız gerekir.
‫Şimdi C++'ya gidelim ve orada neler olduğuna bir göz atalım.
‫Yani herkese açık bir işlev oluşturabiliriz, ancak bu onu mutlaka erişilebilir kılmaz.
‫Erişilebilirliği sağlamak için, blueprint'i görünür kılan ve başlık araç sistemini açan bir U fonksiyonuna sahip olmamız
‫gerekir.
‫Ancak bunu sadece bir işlev olarak görmekten bir adım öteye gitmeliyiz.
‫Bu yüzden you fonksiyon makrosu ile başlıyoruz, ancak bunu blueprint çağrılabilir hale getirmek istiyoruz.
‫Yani blueprint callable kullanabileceğimiz seçenek budur.
‫Bununla birlikte, Blueprint'i geçersiz kılan veya daha ziyade blueprint'in çağrılabilir olduğunu ima eden ve blueprint
‫pure olan başka bir seçenek daha vardır.
‫Şimdi blueprint pure ile Blueprint callable arasındaki farkı birazdan göreceğiz.
‫Ancak Blueprint Pure kullanıyorsanız, Blueprint Callable ile aynı şeyi yaptığını ve daha fazlasını yaptığını bilin.
‫Yani Blueprint çağrılabilirden biraz daha fazlasını yapıyor.
‫Ve sonra istediğimiz şey, bu karakterin ölü olup olmadığını söyleyen Boolean döndüren
‫bir işlevdir.
‫Bunu bilmek bizim için faydalı olacaktır.
‫Ve son olarak, bunun bir konser üye fonksiyonu olmasını istiyoruz.
‫Şimdi, neden konser olmak istiyor?
‫Çünkü bu fonksiyonu çağırdığımızda, atıcımızın herhangi bir durumunu karakter olarak değiştirmesini beklemiyoruz.
‫Dolayısıyla bunun bir konser işlevi olması gerektiğini rahatlıkla söyleyebiliriz.
‫Aslında concert ve blueprint pure genellikle birlikte kullanılır çünkü blueprint pure, herhangi bir blueprint'e
‫girdiğimizde bazı saf düğümlere bakabileceğimiz anlamına gelir.
‫Buradakini dönüştürün.
‫Bu saf bir düğüm.
‫Get velocity saf bir düğümdür set speed saf bir düğüm değildir.
‫Bunları birbirine bağlayan şeyin ne olabileceğini görebiliyor musunuz?
‫Bunları saf olmayan ve bunu saf yapan şey nedir?
‫Genel olarak konuşmak gerekirse, bir infaz iğnesi olduğu gerçeği.
‫Saf bir düğüm, yürütme pimi olmayan bir düğümdür.
‫Ve genellikle bir şeyin, çağırdığı şey üzerinde herhangi bir etkisi olmadığında, yalnızca sonucu üzerinde bir yürütme
‫iğnesine sahip olmadığını söylemek güvenlidir.
‫Esasen bu, bu fonksiyonu kaç kez çağırırsak çağıralım, her zaman aynı sonucu vereceği
‫anlamına gelir.
‫Program üzerinde her zaman aynı etkiyi yaratacaktır.
‫Saf bir fonksiyon olarak.
‫Çağrıldığında hiçbir şeyi değiştirmez.
‫Yani sabit ile aynı şeydir, ancak biraz daha güçlüdür çünkü söylediği şey sadece burada atıcı karakterde
‫hiçbir şeyi değiştirmediği değil, aynı zamanda küresel hiçbir şeyi, herhangi bir yerdeki herhangi bir
‫durumu değiştirmediğidir.
‫Nokta.
‫Tek girdi, sahip olduğu tek etki ürettiği çıktılardır.
‫İşte bu yüzden bu planı saf hale getirmeyi seçiyoruz.
‫Bir yürütme pimine olan ihtiyacı ortadan kaldırır, bu da planlarda çok daha güzel olmasını sağlar.
‫Ayrıca bu fonksiyonu çağırdığımızda oyunumuzun durumunda herhangi bir değişiklik yapmadığımız gerçeğini
‫de ifade eder.
‫Öyleyse devam edelim ve bunun için bir uygulama oluşturmaya çalışalım.
‫Aslında, uygulamayı bir meydan okuma olarak size bırakacağım ve bunu bir animasyon
‫grafiğine, pardon, animasyon planının bir olay grafiğine bağlayacağız.
‫Bu yüzden burada yeni bir set oluşturarak bunu yapacağız.
‫Sonunda is dead boolean değişkenini ayarlamak istiyoruz ve piyon sahibini almak istiyoruz ve bunu döküm yapmak istiyoruz
‫çünkü bu is dead özelliğine sahip olmak için bir atıcı karakter olması gerekiyor.
‫Bu yüzden onu C++ atıcı karakterlerine atamak istiyoruz çünkü bunun kesinlikle
‫bir blueprint versiyonu olduğunu söyleyecek kadar aşağı inmeme gerek yok çünkü
‫bu yeni fonksiyon aslında C++ seviyesinde var.
‫O yüzden devam edip atışı yapacağız.
‫Eğer dökümde başarılı olursak, is dead özelliğini ayarlayacağız.
‫Planımızı biraz daha güzel bir görünüme kavuşturmak için buraya bazı yönlendirme düğümleri koymama
‫izin verin.
‫Ve sonra yapmak istediğimiz şey bu atıcı karakter referansını kullanmaktır.
‫Şimdi onu bir atıcı karaktere atadığımıza göre, bu ölü özelliğine sahip olması gerektiğini biliyoruz.
‫Yani bunu yapabilmeliyiz.
‫Derledikten ve çalıştırdıktan sonra, this is dead özelliğini alabilir ve buraya ayarlayabilirsiniz.
‫Şimdi ölüp ölmediğimizi hesaplamak için meydan okuma zamanı.
‫Bu yüzden is dead fonksiyonumuzdan doğru boolean değerini döndürün.
‫Bu ilk adım.
‫Bunun için sağlık değişkenimizle bazı eşitsizlikler kullanmak ve ardından değişkenimizi bağlamak isteyebilirsiniz.
‫Animasyon planındaki ölü ölüdür değişkeni bunu yapmaya çok az kaldı.
‫Bunu yapmaktan sadece bir derleme uzakta olmamız gerekiyordu.
‫Videoyu duraklatın ve bunu halledin.
‫Tamam.
‫Tekrar hoş geldiniz.
‫Öncelikle koda geçelim.
‫Yani bu oldukça basit bir şekilde, boolean döndüren bir ifade döndüreceğim.
‫Yani şunu söylemek istiyoruz: Sağlık sıfırdan küçük mü yoksa sıfıra eşit mi, bu durumda gerçekten ölmüş oluyor muyuz?
‫Bir işlevin ifadesi ancak bu kadar basit olabilir.
‫Öyleyse devam edelim ve bunu inşa edelim.
‫Ve bu derlendikten sonra, Unreal'a gidebilir ve onu bağlayabiliriz.
‫Bu yüzden as shooter'ı karaktere sürükleyerek, burada bir shooter karakter referansına sahip olacağız, bu yüzden
‫yapmak istediğimiz is dead bize bu is dead fonksiyonunu verir, saf olduğu için yürütme pimi olmadığını görebilirsiniz.
‫Sonra bu boolean'ı buradan alıp is dead değişkenimize bağlarız.
‫Ve şimdi devam edip oynarsak, aslında dünyadaki o karakteri öldürebilmeliyiz.
‫Sağlığı sıfıra inene kadar ona ateş edeceğiz.
‫Ve işte oldu.
‫Animasyon onu başarıyla öldürdü.