‫Merhaba ve hoş geldiniz.
‫Bu derste, BP oynatıcımıza yeni bir bileşen ekleyeceğiz, fizik tutacağı.
‫Ve grabber bileşenimizde buna nasıl bir işaretçi alabileceğimizi öğreneceğiz.
‫Ayrıca kendimizi yanlışlıkla motoru çökertmekten nasıl koruyabileceğimize de bakacağız.
‫Nasıl olduğunu görelim.
‫Şimdi, bir nesneyi tutabilmek için fizik sistemiyle etkileşime girmemiz gerekiyor.
‫Ve aslında kullanabileceğimiz fizik tutacağı adı verilen bir bileşen var, bu da fiziksel nesneleri yakalamamıza ve onlara dünyada nerede
‫olmak istediğimizi söylememize izin veriyor, ancak bunu fiziksel kısıtlamaları kabul edecek şekilde yapıyor,
‫böylece duvarlardan geçmiyor.
‫Ve nesne, gitmesini söylediğimiz belirli bir noktayı katı bir şekilde takip etmek yerine bir yay üzerindeymiş
‫gibi görünüyor.
‫Bu yüzden bu fizik bileşenlerini kullanacağız.
‫Yakalayıcı ile birlikte gidip oynatıcımız BP'ye ekleyeceğiz.
‫Şimdi bileşenler bölmesinin altındaki ekle düğmesine gidelim ve fizik tutamacını bulup ekleyelim.
‫Ve bunun bir sahne bileşeni değil, bir aktör bileşeni olduğunu görebilirsiniz, çünkü
‫alt bölümde aşağı iner, bu yüzden aslında kendi fiziksel dönüşümü yoktur.
‫Fizik tutamacıyla yaptığımız şey, ona yakalayacağı nesneyi söylemek ve ardından yakaladığımız nesneyi
‫nereye koymasını istediğimizi söylemektir.
‫Dokümantasyona giderseniz, bunu mevcut fonksiyonlarda görebilirsiniz.
‫Fonksiyon bölümünü aşağı kaydırırsanız, konum fonksiyonunda bir serbest bırakma bileşeni ve bir yakalama bileşeni
‫olduğunu görebilirsiniz.
‫Ayrıca belirlenmiş bir hedef konumu ve dönüşü vardır.
‫Burası nesneyi yerleştirmek istediği yerdir, ancak bunu yaparken fiziksel kısıtlamalara
‫saygı gösterecek ve bunu bir yay üzerindeymiş gibi yumuşak bir şekilde yapacaktır.
‫Şimdi, bu fonksiyonları henüz kullanmayacağız, ancak bu bileşeni yakalayıcı bileşenimizde
‫tutmanın bir yolunu bulmamız gerekiyor.
‫Peki bunu nasıl yapacağız?
‫Pekala, hadi CP'mize gidelim ve begin play'e bir göz atalım ve onu ele geçirmeye çalışalım.
‫Artık herhangi bir aktör üzerinde, bir bileşeni türüne göre bulmamızı sağlayan bir işlev var.
‫Ancak fiziksel tutamağın türü nedir?
‫Bu bir fizik kolu bileşenidir.
‫Şimdi, bu türü elde etmek için bir include kullanmamız gerekiyor ve belgelerde include'in physics engine forward
‫slash physics handle components olduğunu görebilirsiniz.
‫Bunu bir CP'ye kopyalayalım ve add draw debug helpers'ın altına ekleyelim.
‫Daha sonra yapacağımız şey, bir işaretçiye sahip olmak için bir get ONA
‫yapmak, ardından bir ok yapmak ve bileşeni sınıfa göre bulmaktır.
‫Şimdi bu fonksiyon, C++'da şablon fonksiyon olarak adlandırılan özel bir fonksiyon türüdür ve bu, derlediğinizde
‫gerçekten değerlendirilecek bazı parametreler aktarabileceğiniz anlamına gelir.
‫Bunu yapmanın yolu da aşağıdaki gibi köşeli parantezler kullanmaktır.
‫Yani fonksiyondan sonra bir köşeli parantez kullanırsınız ve ona bulmasını istediğiniz
‫türü verirsiniz, ki bu bizim durumumuzda you physics handle bileşenidir.
‫Ve sonra köşeli parantezleri kapatırsınız.
‫Ancak bu bir fonksiyon olduğu için, normal parantezler kullanarak da çağırmanız gerekir.
‫Bundan sonra ikinci parantez kümesini koyarsınız.
‫Dolayısıyla, bu derleme zamanı argümanlarının köşeli parantezler kullanılarak aktarıldığını ve ardından çalışma zamanı argümanlarının
‫parantezler kullanılarak aktarıldığını görebilirsiniz.
‫Şimdi, normal bir fonksiyon gibi, bunun da bir geri dönüş değeri olacaktır ve bu durumda geri dönüş değeri
‫buraya aktardığımız tür olacaktır.
‫Ancak bir işaretçi olarak, bir fizik tanıtıcısı bileşen işaretçisini alabilir ve bunun için fizik tanıtıcısı olarak adlandıracağımız
‫bir değişken oluşturabilir ve bunu sınıfa göre bu get owner find bileşenine eşit olarak ayarlayabiliriz.
‫Şimdi bu satırın sonunda bir noktalı virgül olduğunu hatırlayalım ve bu, aynı aktörümüz üzerinde
‫başka bir bileşeni ele geçirmemiz için gereken her şeydir.
‫Şimdi size işaretçilerin tehlikeli olabileceğini söylediğimi hatırlayın çünkü bazen null olabilirler ve
‫bu da bir çökmeye yol açabilir.
‫Aktörümüze bir fizik tutamacı bileşeni koymayı unuttuğumuzu veya yeni bir aktöre bir tutucu koyduğumuzu ve bunu henüz
‫bir fizik tutamacı bileşenine bağlamadığımızı düşünün.
‫Eğer durum buysa, fizik tanıtıcı işaretçisi bir null işaretçisi olacaktır.
‫Ve eğer bu işaretçi üzerinde ok operatörünü veya referans operatörünü kullanmaya çalışırsak, motorumuz çökecektir
‫ve bu çökmenin neye benzediğini görmek bazen gerçekten zor olabilir.
‫Bu yüzden, sadece size göstermek için bu çökmeye neden olacağım ve gelecekte başınıza gelirse
‫bunu fark edebilirsiniz, fizik tanıtıcı işaretçimizi null işaretçisine eşit
‫olarak yeniden atayacağım.
‫Özel anahtar kelime.
‫Hepsi boş.
‫Peter C++'da null pointer bu şekilde yazılır.
‫Sonra sonuna noktalı virgül koyarsınız ve sonra yapacağımız
‫şey fizik, ok tutma, isim alma gibi işlemler yapmaktır.
‫Canlı kodlama kullanarak derlemeye devam edersek ve derleme işlemi tamamlandığında,
‫öncelikle burada replay'de devam eden her şeyi kaydettiğimizden emin olacağız çünkü
‫motoru çökertmek üzereyim ve devam edip play tuşuna basarsam, çökme sonucu bu olacaktır.
‫Muhabir Ve bunu gördüğünüzde unreal'da bir şeylerin yanlış gittiğini düşünebilirsiniz,
‫ancak aslında burada hatalı olan sizin kodunuzdur.
‫Bu çökme raporunda, ilk satırda sorunun iki nokta üst üste, iki nokta üst üste, oynamaya başlamanızdan kaynaklandığını
‫görebilirsiniz.
‫Ve aslında bize 28. satır olan satır numarasını da veriyor.
‫Gördüğünüz gibi, 28. satırın bu noktasında, bir fonksiyonu çağırmak için bu işaretçiye
‫başvurduğumuzda, aslında önce işaretçinin null olup olmadığını kontrol etmeyerek büyük bir hata
‫yaptık.
‫Yapmamız gereken de bu.
‫Ve bunu bir if ifadesiyle yaparız.
‫Temel olarak, eğer fizik tanıtıcısı null işaretçisine eşit değilse, o zaman devam edebilir ve bu fizik tanıtıcısı üzerinde bir şeyler çağırabiliriz, böylece fiziksel tanıtıcıyı
‫koyabiliriz, bu if deyiminin içine isim alabiliriz ve bu bizi korur çünkü bu kod,
‫D referans kodu null işaretçisine sahip olduğumuz durumda yürütülmeyecektir.
‫Şimdi devam edeceğim ve null işaretçiye ayarladığımız 27. satırı kaldıracağım.
‫Ve bileşen adını kendiniz yazdırmanız için size meydan okuyacağım.
‫Bu nedenle, yalnızca gerçek bileşene sahipsek yazdırın, temelde bir null işaretçimiz yok ve bu bileşeni ele geçirmeyi başaramazsak
‫uyarmak için bir else kullanın ve kontrol etmek, videoyu duraklatmak ve denemek için bileşeni kaldırmayı
‫deneyin.
‫Tamam.
‫Tekrar hoş geldiniz.
‫Bu yüzden burada yeni bir günlük mesajı oluşturacağız ve got physics handle colon percent sx diyeceğiz ve U günlüğüne
‫ikinci argüman veya dördüncü argüman olarak kesip yapıştıracağım bu fizik tanıtıcısı
‫adına sahip olacağız.
‫Ve bir yıldız koyacağım çünkü bu bir dize.
‫Şimdi if deyimimizin altına bir else deyimi ekleyelim.
‫Ve buraya başka bir U günlüğü koyacağız, bu sefer bir ekran
‫yerine, sarı renkte çıkacak bir uyarı türü mesaj koyacağız ve Fizik tanıtıcısı
‫bulunamadı, ünlem işareti diyeceğiz.
‫Şimdi editör açık değil, bu yüzden Visual Studio kodu içinde derleme yapmak için bir kontrol kaydırması B yapacağım,
‫başarılı olduğunda terminali kapatacağım ve yeni projeden yeniden başlatacağım.
‫Bu başlatıldıktan sonra, devam edelim ve oynat düğmesine basalım, çıktı günlüğünü açalım ve günlük mesajını görelim.
‫İsmin hangi fizik kolu olduğunu buldum.
‫Tuhaf bir şekilde, fizik kolu.
‫Şimdi bip sesi oynatıcımıza gidip o fizik tutamacını silsek ve devam edip oynatsak
‫ne olur?
‫Şimdi çıktı günlüğümüze bir göz atın, fizik tanıtıcısı bulunamadığına dair sarı bir uyarı
‫alıyoruz.
‫O zaman oyunu durduralım.
‫Devam edelim ve fizik tutamacını geri ekleyelim çünkü bunu isteyeceğiz ve oyuncuyu kaydedeceğiz.
‫Bip, harika.
‫Böylece bir bileşenin içinden diğer bileşenleri nasıl ele geçirebileceğimizi anladık ve null işaretçilerle
‫nasıl başa çıkacağımızı ve neden dikkatli olmamız gerektiğini öğrendik.
‫Bir sonraki derste görüşürüz.