‫Merhaba ve tekrar hoş geldiniz.
‫Şimdi kullanıcı girdisini işlemeye başlamaya hazırız.
‫Bu, klavye tuşlarına basmak, fareyi hareket ettirmek ve fareye tıklamak ve tankımızın bu girdiye tepki verdiğini görmek
‫istediğimiz anlamına gelir.
‫Şimdi, bunu yapmak için öncelikle bu girdiyi gerçekten almamız gerekiyor ve bunu ilk olarak eksen eşlemelerini
‫kullanarak yapmaya başlayacağız.
‫Bu konu hakkında konuşalım.
‫Şimdi burada projede, düzenle ve proje ayarlarına gidelim.
‫Ve aşağı kaydırıp girişi seçersek, burada bağlarımızı görürüz.
‫Bağlamaların altında eylem eşlemeleri ve eksen eşlemeleri vardır.
‫İlk olarak eksen eşlemelerine gireceğiz.
‫Şimdi bunlarla ilgili biraz deneyiminiz olabilir, ancak bunların ne yaptığı ve nasıl çalıştığı konusunda
‫biraz daha derinlemesine bir dalış yapacağız.
‫Yani üç tane var.
‫Açılır oka tıklarsam, burada W ve SW tuşlarını göreceğim ve bunlar klavyedeki W ve SW tuşlarından
‫bahsediyor.
‫Bunlar, İleriye Taşı adı verilen bu özel eksen eşlemesine atanır.
‫Şimdi bu eksen eşlemesinin nasıl çalıştığını tartışalım.
‫Unreal Editor'de Move Forward adında bir eksen eşlememiz olduğunu ve bu eksen eşlemesine
‫W ve SCS atandığını gördük.
‫Peki bu tam olarak ne anlama geliyor?
‫Unreal Engine'de eksen eşleme denen bir şey var.
‫Ve eksen eşleme, oyunun her karesinde işlenen bir şeydir.
‫Bir eksen eşlemesine tuşlar atarsınız.
‫Bizim durumumuzda, W ve S'yi atadık.
‫Şimdi burada W tuşunun yanına bir göz atın.
‫Sağdaki küçük ekran görüntüsü örneğimde ölçek yazıyor.
‫Ve ölçeğin yanında bir numara var. 0.
‫Ve SQ'nun yanındaki ölçeğin -1 olduğunu fark etmiş olabilirsiniz. 0.
‫Yani bunlar o girdi bilgisini etkileyecek değerlerdir.
‫Bir eksen eşlemesinin nasıl çalıştığı aşağıda açıklanmıştır.
‫İleriye doğru hareket eden eksen eşlememiz C++'da bir fonksiyonla ilişkilendirilebilme özelliğine sahiptir.
‫Şimdi, Eksen eşlemeleri söz konusu olduğunda, bir işlevi bir Eksen eşlemesiyle ilişkilendirirsek, float
‫türünde bir giriş parametresi alması gerekir, böylece havuzumuzda bir float alan MOVE adlı bir işlev oluşturabiliriz.
‫Bu giriş parametresi değerini sadece arayacağız.
‫Şimdi bu işlevi almanın ve ileri hareket ekseni eşlememizle ilişkilendirmenin bir yolu var.
‫Taşıma işlevini eksen eşlemesine bağladığımızı söyledi.
‫Yani oyunun her karesinde Unreal Engine'in giriş sistemi W tuşuna mı yoksa tuşa mı bastığımızı
‫kontrol edecek.
‫Ve bu tuşlara basıp basmadığımıza ve her bir kareye bağlı olarak bir eksen değeri hesaplayacaktır.
‫İlerlemek için bağladığımız bu fonksiyonu çağıracak ve eksen değerini içeri aktaracaktır.
‫Bu fonksiyonun içinde ne olacağı C++ geliştiricisi olarak bize bağlıdır.
‫Şimdi nasıl çalıştığını anlatayım.
‫W veya Tuşlarına basmıyorsak, bu eksen değeri sıfır değerine sahiptir.
‫Dolayısıyla, ileri hareket ekseni eşlemesine bağlı olan hareket işlevi her bir karede çağrılır
‫ve aktarılan float değeri sıfırdır.
‫Şimdi diyelim ki W tuşuna basıyoruz.
‫W tuşunun ölçeği 1 olarak ayarlanmıştır. 0.
‫Bu, eksen değerimizin 1 olacağı anlamına gelir. 0 ve MOV işlevine aktarılan şey budur.
‫Böylece her bir karede move işlevi 1 değeriyle çağrılır. 0 geçti.
‫Şimdi diyelim ki bunun yerine ölçek değeri -1 olan SRC'ye basıyoruz. 0.
‫Bu, her bir karede move fonksiyonunun çağrılacağı ve -1 olacağı anlamına gelir. 0 içeri aktarılacaktır.
‫Şimdi hem W hem de S'ye bastığımız durumda, bu değerlerin her ikisi de toplanır.
‫Yani 1'i alıyoruz. W tuşuna basarak 0 ve -1 elde ederiz. SRC'ye basmaktan 0.
‫Şimdi bunların ikisi de birbirini iptal ediyor.
‫Dolayısıyla, her ikisine de aynı anda basarsak, move işlevi sıfır geçilmiş olarak çağrılacaktır.
‫Böylece hangi tuş kombinasyonuna bastığımıza bağlı olarak, MOVE fonksiyonumuza farklı bir değer
‫aktaracağız ve bu değerle istediğimiz şeyi yapabiliriz, örneğin piyonu hareket ettirmek için kullanabiliriz.
‫Piyonu hareket ettirme konusunu yakında konuşacağız.
‫Şimdilik, Axis haritalama sisteminden gelen bu bilgileri kullanabilmemiz için kendimizi gerçekten
‫ayarlamaya çalışalım.
‫Tamam, artık Eksen eşlemesinin nasıl çalıştığını bildiğimize göre, ileri hareket ekseni eşlemesine bağlayabileceğimiz
‫bir geri arama işlevi oluşturmanın zamanı geldi.
‫Bu yüzden proje ayarlarını kapatacağım ve VS koduna geri döneceğim.
‫Burada VS kodunda, ileri hareket ekseni eşlemesine bağlayabileceğimiz bir fonksiyon oluşturmak istiyoruz.
‫Yani burada H tankında özel bir fonksiyon oluşturabiliriz.
‫Şimdi olacak.
‫Void dönüş tipi ve bu hareketi çağırmak istiyorum.
‫Şimdi bir float giriş parametresine sahip olması gerekiyor ve biz bu değeri çağıracağız.
‫Şimdi move fonksiyonumuzu alalım ve burada Tank içinde tanımlayalım.
‫CP Bunu buraya, yapıcının hemen altına yerleştireceğim ve fonksiyon adından önce kapsam çözümleme operatörüne sahip bir
‫tanka ihtiyacımız var.
‫Böylece bu hareket fonksiyonuna sahibiz ve onu ileri hareket ekseni eşlememize bağlamaya hazırız.
‫Ve bu, oyuncu giriş bileşeni kurulumu adı verilen bir işlevin içinde yapılır.
‫Bu tanıdık gelecektir.
‫Aslında, gezginimizi açıp Base Pont H'ye geri dönersek, aşağı kaydırabilir ve genel bölümde işlev
‫kurulum oyuncu giriş bileşenini görebiliriz.
‫Bunun miras alınan bir sanal fonksiyonun geçersiz kılınması olduğunu göreceğiz.
‫Şimdi temel spawn sınıfının herhangi bir girdi ayarlamasına gerek yoktur ve bu işlev bir oyuncudan
‫gelen girdiyi işlemek içindir.
‫Şimdi, temel bağ sınıfımızın girdi işlemesine gerek yoktur, ancak tank sınıfımızın vardır.
‫Yapabileceğimiz şey bu fonksiyonu base pond h'den çıkarmak ama ben onu kopyalayacağım çünkü ona tankta ihtiyacımız
‫var.
‫Bu işlevi kopyalayarak Tank H'ye geleceğim ve burada genel bölüme yapıştıracağım.
‫Ve temel havuzda buna ihtiyacımız olmadığı için, bunu temel havuz sınıfından kaldıracağım.
‫Ve aslında temel havuz CP'sine gireceğim ve onu buradan da kaldıracağım.
‫Şimdi devam edelim ve Base Pond'dan setup player input bileşenini silelim.
‫CP Ve artık temel havuz sınıfında değil.
‫Şimdi devam edip değişikliklerimizi kaydedelim ve Base Pond H ve CP'yi kapatalım.
‫Ve şimdi Tank H'de bildirilen oyuncu giriş bileşenini kurduk, ancak onu ve tankı da tanımlamak istiyoruz.
‫CP Yani burada Tank'ta.
‫CP Tanımı move fonksiyonunun hemen üstüne ekleyeceğim.
‫Yani burası void ve bu bir tank kurulumu oyuncu giriş bileşeni.
‫Şimdi Tank H'ye geri dönelim ve giriş parametresi türünün ne olduğunu görelim.
‫Burada parantezlerin içinde ileri bildirim yapıldığını göreceksiniz.
‫Bu, bir başlık dosyasında bir sınıf türünü iletmek, bildirmek istiyorsanız yapabileceğiniz bir şeydir.
‫Bu yüzden burada ileriye doğru bildirilir ve bu size giriş bileşeni işaretçi tipine ihtiyacımız vardır ve parametreye
‫oyuncu giriş bileşeni denir.
‫Bu yüzden tankta bu giriş parametresine ihtiyacımız var.
‫CP Bu nedenle, kurulum oyuncu giriş bileşeni için parantez içinde, bir işaretçi olan ve oyuncu giriş bileşeni
‫olarak adlandırılan bir U giriş bileşenine sahip olacağız.
‫Artık işlev imzası işlev bildirimindekiyle eşleşir.
‫Şimdi CP dosyasına geri dönelim, bu fonksiyona bir fonksiyon gövdesi verelim ve bu fonksiyonun üzerine
‫yazıyoruz ve super set up player input bileşenini çağırmak iyi bir fikirdir.
‫Şimdi, setup player input bileşeninin üst sürümünü çağırdığımız için, you input bileşeni
‫türünde bir girdi aktarmamız gerekir.
‫Burada bu fonksiyona girdi parametresi aktaracağız.
‫Bu şekilde ana sınıf kendi versiyonunu çağıracaktır.
‫Şimdi temel havuz tankı bu işlevi yerine getirmiyor.
‫Sadece kaldırdık.
‫Ancak temel sınıfın üst sınıfı -- kendi sürümünü çağıracaktır.
‫Ve bunun gibi bir sanal işlevi geçersiz kıldığınızda, süper sürümü çağırmak iyi bir fikirdir.
‫Böylece ana sürümde uygulanan herhangi bir işlevselliği kaçırmayız.
‫Peki bunu neden yapıyoruz?
‫Kurulum oynatıcı giriş bileşeni ne işe yarar?
‫İyi olduğu şeylerden biri de fonksiyonları erişim eşlemelerine bağlamaktır.
‫Hareket fonksiyonumuzu ileri hareket ekseni eşlemesine bağlamak istiyoruz.
‫Ve bunu burada yapıyoruz.
‫Bunu, bu giriş parametresi oynatıcı giriş bileşenini kullanarak yaparız.
‫Bu nesne bunun için tasarlandı.
‫Oyuncu giriş bileşenini alırız ve bu işaretçi üzerinde bind axis adlı bir fonksiyona erişmek için ok operatörünü
‫kullanırız.
‫Şimdi Bind Axis birkaç giriş parametresi alır.
‫İlki bir string literal, yani text makrosunu kullanacağız.
‫Şimdi tırnak içine ne koyacağız?
‫Eksen eşlemesinin adını koyuyoruz.
‫Editörde bu eksen eşlemesinin ileri hareket olarak adlandırıldığını gördük.
‫Dolayısıyla, ikinci giriş parametresine bağlamak için bu eksen eşlemesini seçiyoruz.
‫Bu, nesneye bir işaretçi olacak ve bunun için bağlama işlevi, n'nin bulunduğu belirli sınıfın
‫örneğine bir işaretçi olacak ve tank sınıfında olduğumuz için, bu, oyundaki tank piyonunun
‫örneğini gösterecektir.
‫Şimdi üçüncü parametre, bağladığımız fonksiyonun adresidir.
‫Yani bir tank hareketimiz var.
‫Tam olarak yapmamız gereken çok önemli bir şey.
‫İşlev adını sınıfın adıyla nitelendirin.
‫Ve tam burada, fonksiyon adının önünde, operatörün adresine ihtiyacımız var.
‫Şimdi, eğer böyle bir şey yapmaya aşina değilseniz, bu basitçe bir fonksiyonun adresini
‫almaktır.
‫Fonksiyonlar da değişkenler gibi adreslere sahip olabilir.
‫Yani address of operatörünü kullanmak, fonksiyonları diğer fonksiyonlara geçirmenin bir yoludur.
‫İşte bu yüzden operatörün adresine ihtiyacımız var.
‫Böylece erişimi bağlamak için fonksiyon çağrımız var.
‫Şimdi muhtemelen IntelliSense hata işaretçisinin eksik sınıf türüne giriş bileşenine izin verilmediğini fark
‫ediyorsunuzdur.
‫Artık buna neyin sebep olabileceğini biliyoruz.
‫Birincisi, bir başlık dosyası eklememiz gerektiği anlamına gelebilir.
‫Bir başka olasılık da bunun yanlış bir hata olmasıdır.
‫Derleyerek kolayca öğrenebilirsiniz, bu yüzden derlemeye çalışalım.
‫Başarılı bir derleme yaptığımızı göreceğiz.
‫Bu yüzden bunun yanlış bir hata olduğunu biliyoruz.
‫Ancak yine de isterseniz, sadece bunu kaldırmak için include ekleyebilirsiniz.
‫Yani seni rahatsız etmiyor.
‫Artık şikayet ettiği sınıf türünün giriş bileşeni olduğunu biliyoruz.
‫İşte dokümantasyondaki girdi bileşeni ve işte include.
‫Ve bunu tank CP dosyasının en üstüne eklersek, o sinir bozucu yanlış hatadan kurtulacağız.
‫Ve yine, bunlar pragya wants include korumalarına sahip olduğu için, girdi bileşenlerinin birden
‫fazla kez dahil edilmeyeceğini biliyoruz ve işte dalgalı çizgiler gitti.
‫Artık bu hareket fonksiyonunun her karede çağrılacağını ve değerin W'ye basmamıza veya sormamıza
‫bağlı olarak belirli bir float değerine sahip olacağını biliyoruz.
‫Şimdi, sadece hareket fonksiyonunun ileriye doğru hareket etmek zorunda olduğunu bilmek yeterli değildir.
‫Geliştiriciler olarak, işlerin yolunda gittiğine dair bir tür onay almak güzeldir.
‫Bu yüzden sizden yapmanızı istediğim şey, MOV işlevinde YUI logunu kullanarak değer adı verilen
‫float'ı taşımak için geçirilen değeri yazdırmaktır.
‫Bu nedenle, float değerinin değerini çıktı günlüğüne kaydetmek için uiy günlüğünde yüzde f kullanın ve ardından oyunu test edin
‫ve bu tuşlara basın ve günlüğe ne yazdırdığınızı görün.
‫Videoyu duraklatın ve bunu şimdi hareket işlevine ekleyin.
‫Tamam.
‫Bu yüzden burada mov fonksiyonuna bir uii günlüğü ekleyeceğim.
‫Ve bu geçici bir uyarı olabilir.
‫Ve metin makrosu için.
‫Basitçe yüzde F değerini ve değerini koyacağım.
‫Şimdi sorun yok.
‫Farklı bir ayrıntı veya uyarı türü kullandıysanız, bunları nasıl yapacağınızı biliyorsanız.
‫Hiç sorun değil.
‫Burada sadece bir uyarı kullanacağım ve yüzde se gibi şeyler kullandığınızı ve günlüğünüzü bir dize değeriyle
‫biçimlendirdiğinizi biliyorum.
‫Yüzde F, eğer farkında değilseniz, UI günlüğünüzü kayan bir değerle nasıl biçimlendirebileceğinizi gösterir.
‫Şimdi bunu derleyelim ve editöre geri dönelim, çıktı günlüğünü açacağım ve oynat tuşuna basacağım ve çıktı günlüğünü
‫sayısız mesajla spamlayan yeri kontrol edeceğim.
‫Şimdi görüntü alanına tıklayacağım ve W tuşuna basacağım.
‫İşte yayınlayacağım bir değer.
‫Sıfıra geri döndü.
‫Tuşa basacağım ve negatif bir olacak.
‫İkisine aynı anda basarsak sıfır elde ederiz.
‫Ve tam da beklediğimiz gibi oldu.
‫Mükemmel.
‫Tamam.
‫Bu videoda, havuzumuzu bazı kullanıcı girdilerini işleyecek şekilde ayarladık.
‫Erişim eşlemelerinden bahsettik ve move fonksiyonumuzu move forward erişim eşlemesine bağladık.
‫Daha sonra bu erişim değerini MOVE fonksiyonumuzda YUI logunu kullanarak yazdırdık, ancak aslında çıkış loguna bazı değerleri
‫yazdırmak yerine tankımızı hareket ettirmek istiyoruz.
‫Gelecek derslerde, tankımızı gerçekten hareket ettirmeye başlayabilmemiz için onu ayarlayacağız.
‫Yakında görüşürüz.