‫Hey.
‫Tekrar hoş geldiniz.
‫Oyunumuzu bitirmeye hazırız, yani oyunumuzu cilalamak ve mutlu olduğumuz bir duruma getirmek
‫için yapmamız gereken sadece birkaç şey kaldı.
‫O yüzden bu oyunu bitirmeye hazır olun.
‫Neredeyse bitti.
‫Sadece birkaç özellik ekleyeceğiz.
‫Kamera hareketini biraz daha yumuşak hale getirmek istiyorum, bu yüzden bununla başlayacağız.
‫Ayrıca, tank öldükten sonra kulelerin hala mermileri ateşlediğini fark ettim, bu yüzden bunun olmasını
‫önlemek için kodda kolay bir düzeltme yapabiliriz.
‫Ayrıca, merminin ortaya çıkma noktasıyla ilgili potansiyel bir sorunu ziyaret edeceğim.
‫Haydi başlayalım ve bu oyunu parlatalım.
‫Şimdi, bakmak istediğim ilk şey kamera hareketi.
‫Şimdi oynat tuşuna basarsam, size ne demek istediğimi göstereceğim.
‫Ben hareket ettikçe, kameranın biz döndükçe ve biz ileri ve geri hareket ettikçe hareketimizi
‫tam olarak takip ettiğini göreceksiniz.
‫Şimdi, bu kameraya ekleyebileceğimiz ve onu biraz daha pürüzsüz hale getirebilecek güzel bir numara var.
‫Devam edelim ve BP havuz tankını açalım.
‫Şimdi burada BP Pond Tank'ta yaylı kol bileşenimizi seçeceğim.
‫Kamera gecikmesi için arama yaparsam, burada gecikme bölümünde kamera gecikmesini etkinleştir onay kutusunun olduğunu
‫göreceğim.
‫Bunu kontrol edeceğim ve kamera dönüş gecikmesini etkinleştireceğim.
‫Bunu da kontrol edeceğim.
‫Şimdi, bu bize kameranın geride kalmasını ve sorunsuz bir şekilde yetişmesini sağlar, bu da hoş bir tür profesyonel
‫kamera efekti yaratır.
‫Hadi devam edelim ve play tuşuna basıp bunu test edelim.
‫Ben hareket ettikçe, kameranın biz hareket ederken bize yetişmesi için kısa bir süre geçtiğine dikkat edin.
‫Aynı şey rotasyon yaptığımız zamanlar için de geçerli.
‫Yani sanki biraz atalet var ve kamera bir tür kayan ray üzerinde ve durmak için yavaşlıyor.
‫Şimdi yaylı kolu seçebilir ve kamera gecikme hızını ve dönüş gecikme hızını değiştirebiliriz.
‫Örneğin, bunu daha küçük bir değere yerleştirirsem, diyelim ki on yerine beş ve beş, şimdi nasıl göründüğüne
‫bir bakalım.
‫Hareket ediyorum ve kameranın biraz daha gecikmeli olduğunu göreceksiniz.
‫Şimdi, bunu uygun gördüğümüz şekilde artırabilir veya azaltabiliriz.
‫Bu, deneyebileceğiniz ve sizin için işe yarayan değerleri bulabileceğiniz bir şeydir.
‫Burada iki değerimiz var ve benim için bu biraz fazla gecikme.
‫Sanırım beş ile iki arasında bir şey benim için uygun olacaktır.
‫Bu tür bir değeri seviyorsanız, belki iki ya da daha düşük bir değerde tutabilirsiniz.
‫Ancak bunu kamera gecikme hızı için dört ve kamera dönüş gecikme hızı için dört gibi bir değere koyacağım.
‫Bunun nasıl göründüğüne bir göz atalım.
‫Ben hareket ettikçe kamera gecikiyor.
‫Kamerada bir miktar gecikme olduğu açık, ancak çok fazla değil.
‫Bence bu aslında oldukça iyi görünüyor, bu yüzden bundan oldukça memnunum.
‫Bir sonraki öğemiz, tank zaten öldükten sonra kulenin ateşlenmesi.
‫Size ne demek istediğimi göstereyim.
‫İşte oldu.
‫Tank öldü ve kuleler hâlâ ateş ediyor.
‫Bunun nedeni tankın hâlâ var olmasıdır.
‫Ve ateş menzilinde olduğu sürece, kuleler ateş etmeye devam edecektir.
‫Bu, tankın ölüp ölmediğini kontrol edebileceğimiz bir tür değişkene sahip olarak kolayca halledilebilir.
‫Bu yüzden tank sınıfına gireceğim ve tankın hala canlı olup olmadığını kontrol edebileceğimiz
‫bir Boolean değişkeni ekleyeceğim.
‫Ve sınıf dışından erişmeyi planladığımız için bunu herkese açık yapacağım.
‫Bu yüzden bunu Be Alive adında bir boğa değişkeni yapacağım ve varsayılan olarak true değerine eşitleyeceğim.
‫Böylece tank canlı durumda başlayacak ve daha sonra tank öldüğünde, canlı yanlış olarak ayarlanacaktır.
‫Bu da tank CP'sinde sap yıkımında gerçekleşebilir.
‫Şimdi yıkımı ele alalım.
‫Ve bu diğer özellikleri ayarladıktan sonra, B alive değerini false değerine eşitleyeceğim.
‫B alive değerini false olarak ayarladığımız için, tankın ölüp ölmediğini anlayabilir ve bu booleanı kontrol
‫ederek mermilerin ateşlenmesini önleyebiliriz.
‫Şimdi Tower Dot, CP'ye gidelim ve burada yangın durumunu kontrol edelim.
‫Ateş etmeden önce tankın hâlâ hayatta olduğundan emin olabiliriz.
‫Bu yüzden önce tankın geçerli olup olmadığına bakacağım.
‫Eğer tank null pointer'a eşitse, o zaman erken döneceğimi söyleyeceğim.
‫Bu şekilde Tank'ın geçerli olacağını biliyoruz ve sonra ateş menzilinde olup olmadığımızı kontrol ederken,
‫bir ve ekleyeceğim ve Tank'ın hayatta olup olmadığına bakacağım.
‫Eğer tanksa.
‫Yaşıyorsa ateş edebiliriz.
‫Eğer Tank hayatta değilse, ateş etmeyeceğiz.
‫Şimdi, önceki videolarda yaptığımı gördüğünüz gibi dönüşü tek bir satıra koymanın iyi bir fikir olup olmadığını
‫merak ediyor olabilirsiniz.
‫Bu da Unreal Engines, en iyi programlama uygulamaları ve önerileri tartışmak için iyi bir fırsat.
‫Unreal engine kodlama uygulamaları, tek bir ifadeye sahip olanlar da dahil olmak üzere tüm if ifadeleriniz için bir gövde
‫ile küme parantezleri kullanmanızı önerir.
‫Bunun nedeni, buna birden fazla kod satırı eklemeyi planlıyorsanız, zaten burada bir gövdeye sahip
‫olmanızdır.
‫Ayrıca daha net.
‫Bu da beni başka bir noktaya, yani otomatik kullanımıma getiriyor.
‫Burada projectile sınıfında birkaç kez auto kullandım ve bu verimli olsa da, ilk bakışta
‫türlerin ne olduğu o kadar açık değil, bu yüzden auto kullanımı unreal engine kodlama uygulamalarında
‫da önerilmiyor.
‫Unreal Engine'in önerdiği kodlama uygulamalarına sadık kalmak istiyorsanız, bu auto örneklerini gerçek
‫türle değiştirebilirsiniz.
‫Örneğin, burada, get instigator controller bir A controller döndürür, böylece bunu bir controller olarak değiştirebiliriz
‫ve bu bir işaretçidir.
‫Bu hasar türü static class bir U sınıfı döndürür, bu nedenle burada you class'ı kullanabiliriz ve tabii
‫ki burada get owner bir a actor döndürür, bu nedenle burada auto yerine a actor kullanabiliriz ve şimdi bu koda
‫bakarsanız, bu türlerin ne olduğu çok daha açıktır, oysa auto her şeyi maskeler ve tembel
‫olmanıza ve türleri yazmamanıza izin verir.
‫Şimdi bazen büyük bir ifadenin ne döndürdüğünden emin olamıyorum, bu yüzden sadece bu türün ne olduğunu görmek
‫için auto kullanacağım ve daha sonra bunu gerçek türle değiştireceğim.
‫Bu da auto'yu, bunun gibi uzun ve karmaşık ifadelerin döndürdüğü türleri öğrenmenize yardımcı olması için kullanabileceğiniz bir başka
‫yoldur.
‫Bu yüzden, cilalama aşamalarında olduğumuz için, auto'yu burada projectile'daki gerçek tür adlarıyla
‫değiştireceğim.
‫Ayrıca bu mermiye sahip olduğumuz ve bunun buradaki büyük uzun ifadeden döndürüldüğü ateşleme işlevindeki
‫temel piyona da gireceğim.
‫Spawn aktörü bu durumda bir mermi döndürecek, bu yüzden bunu bir mermi ile değiştirebilirim.
‫Tamam.
‫Bu da C++ tarafındaki kodu geliştirecek.
‫Devam edelim ve bunu derleyelim.
‫Başarılı bir derlemenin ardından editöre geri dönelim, play tuşuna basalım ve biz öldükten
‫sonra kulelerin bize ateş etmeyi bıraktığından emin olalım.
‫Yani bir vuruş var.
‫Bir tane daha var, bekliyorum ve başka mermi görmüyorum.
‫Mükemmel.
‫Tamam.
‫Bu konuyu kapatmadan önce değinmek istediğim son nokta, mermilerin ortaya çıkma noktası.
‫Şimdi bunu BP Pond Tank'ta seçelim ve varilden yeterince uzakta olduğundan emin olalım.
‫Bunu yapmadan önce, gerçekten çok yakın bir yere yerleştireceğim ve size potansiyel olarak ortaya çıkabilecek
‫bazı sorunları göstereceğim.
‫Şimdi, ilerlerken ve sol fare düğmesine tıklarken, mermiyi görmediğimi göreceksiniz.
‫Aslında hiç göremiyorum çünkü çok yakın.
‫Zaten bir çarpışma yaşıyoruz.
‫Bir şey yapamadan yok ediliyor.
‫Bu yüzden namludan iyi bir uzaklıkta olduğundan emin olun.
‫Zaten bir miktar duman üretiyoruz, bu yüzden arkasında bir duman izi varmış gibi görünecek.
‫Yani bu yine de oldukça gerçekçi görünecek.
‫Bu oldukça iyi görünüyor.
‫Mermi çıkış noktalarından bahsetmişken, BP gölet kulesine gidip bakmak ve mermi çıkış noktasını
‫seçmek iyi bir fikir olabilir.
‫Ve eğer taretten mermi çıkmasında herhangi bir sorun yaşadıysanız,
‫taretin namlusundan iyi bir mesafe uzakta olduğundan emin olmak isteyebilirsiniz.
‫İşte bu kadar.
‫İşlevsel bir oyunumuz var ve harika görünüyor.
‫Dünyada yuvarlanma yeteneğimiz var, mermi atma yeteneğimiz var ve bunlar bir şeyleri havaya
‫uçuruyor.
‫Eğer bir kuleyi vurursak, onu yok edebiliriz.
‫Eğer kule bize çarparsa, bizi yok edebilir.
‫Aynen böyle.
‫Ve ekranda görüntülenen ve oyunu kazandığımızı veya kaybettiğimizi bize söyleyen HUD widget'ları ile kazanma
‫ve kaybetme koşullarımız var.
‫Yani bu harika.
‫Ve eğer bu oyunu paketlemek isterseniz, bunu en üste gidip platformlar simgesine tıklayarak
‫kolayca yapabilirsiniz, eğer bir Windows makinesindeyseniz Windows için veya bir mac makinesi kullanıyorsanız iOS için,
‫o zaman elbette bu diğer seçeneklere sahipsiniz.
‫Diğer platformlar için paket yapmak istiyorsanız, farklı platformları ve bunlar için nasıl paket yapacağınızı öğrenmek için internette
‫biraz araştırma yapmanızı tavsiye ederim.
‫Ben bir Windows makinesindeyim, bu yüzden burada Windows için package project'e tıklayabilirim ve bana oyunumu
‫nerede paketlemek istediğimi soracak.
‫Şimdi Tune Tanks'te bir projem var.
‫Sağ tıklayıp yeni bir klasör oluşturacağım ve buna basitçe yapı adını vereceğim.
‫Burası genellikle paketlenmiş bir projeyi koyacağınız yerdir.
‫Bu yüzden bu klasörü seçeceğim ve Unreal Engine'in oyunumu paketlemesine izin vereceğim.
‫Muhtemelen birkaç dakika sürecek ve bittiğinde paketlenmiş bir oyunum olacak.
‫Tamam.
‫Paketlemeyi bitirdiğimde, çıktı günlüğünde derleme işleminin başarılı olduğunu görmeliyiz ve ardından paketlenmiş
‫projemiz için belirlediğimiz klasöre bakabiliriz.
‫Benim için bu yapı klasörü olacak.
‫Şimdi dört pencere paketledim, bu yüzden bir Windows klasörüm var ve işte ayar tanklarım, nokta xy.
‫Bu bir çalıştırılabilir.
‫Üzerine çift tıklayabiliyorum ve işte nihai projem.
‫Ateş edebilirim.
‫Kaçabilirim.
‫Görünüşe göre düşman kulelerim bana ateş edebilir ve ben de onları yok edebilirim.
‫Evet, onları yok edebilirim.
‫Görünüşe göre beni yok edebilirler ve ben de oyunu kaybedebilirim.
‫Ve tabii ki biraz daha yetenekli olsaydım oyunu kazanabilirdim.
‫Ve son göreviniz için, sizi oyuna kendi lezzetinizi katmakla görevlendireceğim.
‫Bu oyunu kendiniz yapın.
‫Bazı yeni sesler, efektler veya ağlar bulun ve korkak görünümlü kuleler ve tanklar oluşturun.
‫Daha fazla kule ekleyin, belki farklı beceri seviyeleri ekleyin, seviyeniz boyunca ilerledikçe kuleleri daha
‫da zorlaştırın.
‫Belki tankın seviyesini yükseltebilir, daha fazla kule yıktıkça artırabileceğiniz bir seviye verebilirsiniz.
‫Belki yeni seviye geometrisi ekleyebilir ve tankın rampaları tırmanmasını ve ulaşılması zor bölgelerdeki tankları yok etmeye çalışmasını
‫sağlayabilirsiniz.
‫Olasılıklar sonsuzdur, ama en önemlisi, eğlenin.
‫Siz oyunlarınızı geliştirirken.
‫Bu meydan okuma için videoyu duraklatmayacaksınız.
‫Bu, bu noktadan sonra oyun projelerinizde yapabileceğiniz bir şey olacak.
‫Tebrik ederim.
‫Oyunumuzu bitirdik.
‫Umarım bu bölümü beğenmişsinizdir.
‫Çok eğlendim.
‫Bu harika bir oyun projesi ve uzun bir yol kat ettiniz.
‫Kursun bu bölümü boyunca bir sürü beceri öğrendiniz, umarım daha heyecan verici şeylere
‫geçmeye hazırsınızdır.
‫Çok teşekkür ederim.
‫Ben Steven ve yakında görüşeceğiz.