‫Merhaba ve hoş geldiniz.
‫Bu derste, çirkin heykelimizi gerçekten tutabilmemiz ve onu önümüzde
‫taşıyabilmemiz için tutucumuzu kuracağız.
‫Hadi içeri dalalım ve bunu nasıl yapacağımızı görelim.
‫Şimdi bu tutma bileşenini rotasyonlu bir konumda çağırmaya başlamamızın zamanı geldi.
‫Şimdi, daha önce de söylediğim gibi, aslında bunun iki kısmı var.
‫Bileşeni yakalamamız ve daha sonra hareket etmesi için hedef konumunu ve rotasyonunu da ayarlamamız
‫gerekir.
‫Bu yüzden grab fonksiyonumuzda ilk olarak fizik tutamacımıza bir işaretçi bulmamız gerekecek.
‫Bu yüzden Begin Play'den satırı kopyalayacağım ve grabber'a gidip buraya koyacağım.
‫Ve kendimizi bunun geçersiz olmasından korumak için.
‫Peki, ne olması gerekiyor?
‫Aslında yapmak istediğimiz bir şey yok.
‫Eğer bir fizik tutamağımız yoksa, hiçbir şeyi tutamayız.
‫Dolayısıyla, bu yakalama işlevinin tüm gövdesini bir if deyimine koyabiliriz, ancak bu biraz dağınık görünebilir.
‫Bunun yerine yapabileceğimiz şey, erken dönüş olarak bilinen şeydir.
‫Esasen, sadece fiziğin işleyip işlemediğini söylüyoruz.
‫Eşittir null işaretçisine eşittir.
‫Buraya çift eşittir işareti koymanız gerekir.
‫Aksi takdirde bu bir ödevdir.
‫Sonra aşağıya inip bazı destekler yapabiliriz ve buraya bir dönüş koyabiliriz.
‫Yani bunun yapacağı şey, fizik tanıtıcısı için boş bir noktamız varsa, doğrudan geri döner ve
‫işlevin geri kalanını yürütmez, böylece işlevin geri kalanında fizik tanıtıcısını istediğimiz
‫gibi kullanmamızı güvenli hale getirir.
‫Biz de bunu yapacağız.
‫Vurulduğumuz yere doğru gideceğiz.
‫Sanırım artık bu günlük mesajlarına ihtiyacımız yok.
‫Bu yüzden alt ifadeyi kaldıracağım.
‫Temel olarak if deyiminin gövdesindeki her şeyi kaldıracağım ve grabber'ımızı kullanacağız.
‫Bu yüzden fizik kolu ok tutma bileşenini rotasyonlu konumda yapacağız.
‫O zaman ona yakalamaya çalıştığımız bileşeni sağlamalıyız.
‫Bir göz atarsanız, beklediği şeyin ilkel bir bileşen olduğunu görürsünüz.
‫Bakalım sonuçlarımızda böyle bir şey var mı?
‫Bunun için dokümantasyon sayfasına gideceğim ve ilkel bileşeni arayacağım ve get bileşeninin
‫mükemmel bir şekilde vurulan ilkel bileşeni döndüreceğini görebilirsiniz.
‫Tam da ihtiyacımız olan şey.
‫Bu yüzden hit result dot get bileşenini arayacağız ve bu bize ilk argüman için
‫istediğimizi verecek.
‫Şimdi sırada bir kemik için F ismi var.
‫Şimdi aslında hiçbir şeyi belirli bir kemiğinden yakalamak istemiyoruz.
‫Bir iskelet ağımız olsaydı durum böyle olurdu, ancak yok.
‫Statik bir ağımız var, bu yüzden sadece isim kullanıyoruz, alt çizgi yok.
‫Ve genel olarak konuşursak, kemiklerden bahsettiğimiz F isimlerinde bu oldukça sık karşımıza çıkıyor.
‫Eğer hiçbir şey koymak istemiyorsanız, isim ve alt çizgi kullanmazsınız.
‫Şimdi onu yakalayacağımız konuma ihtiyacımız var.
‫Bu konuyu incelediğimizi zaten söylemiştik.
‫Vuruş sonucu nokta çarpma noktası ve ardından rotasyon, yani bu bileşenin mevcut rotasyonu veya aktörün mevcut
‫rotasyonu, hangisini tercih ederseniz.
‫Böylece isabet sonucu bileşenler elde edilir.
‫Bileşen nokta okunu almak için bu isabet sonuçlarını yakalayacağız çünkü bu, bileşen rotasyonunu almak
‫için bir işaretçidir.
‫Şimdi kapanış parantezlerini ayrı bir satıra koyabiliriz ve ifadeyi bitirmek için oraya noktalı virgül
‫koyacağım ve bu bileşenlerimizi yakalamada etkili olacaktır.
‫Şimdi bulmacanın bir sonraki kısmı, yine fizik tutamacını kullanmak istediğimiz tick bileşeninde.
‫Bu yüzden şimdilik kodu kopyalayacağım, üç yere kod kopyalamanın biraz fazla olduğunu ve bunu yeniden
‫kullanmak için bir fonksiyona çekmeyi düşünmek isteyebileceğimizi biliyorum.
‫Ancak giriş bileşeni, fizik tutamacını kullanacağız, bir fizik tutamacına ulaşamazsak
‫erken dönüş yapacağız.
‫Ve sonra yapacağımız şey, bu hedef konumu belirlemeye çalışmak olacak.
‫Bu yüzden fizik yapacağız, ok ayarlı hedef konumunu ve dönüşünü ele alacağız.
‫Bunun hakkında biraz düşünelim.
‫Ne tür bir hedef konum belirlemekle ilgilenebiliriz?
‫Esasen, bitiş noktasında yaptığımızla aynı olacak.
‫Mevcut konumumuzu alacağız, ardından ileri yönde belirli bir mesafe kadar dışarı doğru hareket ettireceğiz.
‫Şimdi, bu yapılandırılabilir olacak.
‫Maksimum yakalama mesafesini kullanabilirsiniz, ancak pratikte bunun çok uzak olduğunu düşünüyorum.
‫Eğer grab a H'ye gidersek, Edit Anywhere adında yeni bir kullanım özelliği oluşturacağız
‫ve bu özellik tutma mesafesi adında bir float olacak.
‫Ve bunu 200'e ayarlayacağım.
‫Yani oyuncuya çok daha yakın olacak.
‫Şimdi, CP'yi yakalarsak, tik fonksiyonumuza gidebilir ve bu hedef konumu oluşturmayı deneyebiliriz.
‫Yani hedef konum adı verilen bir F vektörü olacak.
‫Bunu get bileşeni konumuna, artı get ileri vektörünün tutma mesafesiyle çarpımına eşit olarak
‫ayarlayacağız.
‫O zaman bunu hedef konum olarak kullanabiliriz.
‫Bu ilk argümanımız olacak ve ardından hedef rotasyona ihtiyacımız var.
‫Bunun için mevcut bileşenin rotasyonunu kullanacağım, böylece etrafa bakarken nesneyi
‫görünümümüzle birlikte döndüreceğiz, böylece mevcut grabber sahne bileşeninin rotasyonunu almak için
‫get component rotation'ı yapabiliriz.
‫Şimdi bu satırın sonuna noktalı virgül koyalım ve yeniden derleyip nasıl çalıştığını görelim.
‫Şimdi, başarılı bir şekilde derledikten sonra, gargoyle'u seçelim ve hareket kabiliyetini START'tan değiştirdiğimizden
‫emin olalım.
‫Hareketli seçeneğine bağlı kalın çünkü fiziğe tepki olarak hareket edebilmesine ihtiyacımız var ve fiziği simüle ettiğinden
‫emin olalım.
‫Fizik kategorisine gidelim ve fiziği simüle et düğmesini işaretleyelim.
‫Oynat tuşuna basalım ve açmaya çalışalım.
‫Sanırım şu anda gerçekleşiyor, ancak zeminin içinde sıkışmış gibi görünüyor, bu yüzden bu ideal
‫değil.
‫Zeminin içine sıkışmaması için biraz yukarı kaldırmayı deneyelim.
‫Bırakın bu şekilde yere düşsün ve şimdi onu kaldırmaya çalışın.
‫Şimdi yine zeminin içine sıkışmış gibi görünüyor, o yüzden ikinci kez deneyelim.
‫Tamam.
‫Bu yüzden biraz güvenilmezdir ve bazen hemen yakalarsanız, gargoyle'u gayet
‫iyi alır ve onu bu şekilde alabilirsiniz.
‫Dönüşün doğru olmadığını fark ediyorum ve bunun nedeni fizik bileşenini yakalarken yanlış şeyi kullanmış
‫olmam.
‫Gargoyle'un rotasyonunu aldım ve şimdi bu rotasyonu korumaya çalışıyoruz.
‫Aslında kullanmam gereken şey, tutucunun rotasyonunu seçerken kullandığımız rotasyondu.
‫O halde devam edip bunu değiştirelim ve yeniden derleyelim ve tekrar play tuşuna basıp yakalamaya çalışalım.
‫Al bakalım.
‫Bu sefer onu tuttum ve doğru dönüşü, tam olarak sahip olduğu dönüşü elde ettim.
‫Gördüğünüz gibi bir yaya tutunmuş gibi görünüyor.
‫Eğer onu bir duvara doğru itmeye çalışırsam, elinden geldiğince duvardan geçmemeye çalışıyor.
‫Sonunda duvardan fırlıyor, ama ben onu hareket ettirirken fiziği gözlemlemeye çalışıyor.
‫Şimdi sizi get physics handle adında yeni bir fonksiyon bulmaya davet ediyorum.
‫Özel olacak.
‫Bir U döndürmesi gerekir.
‫Fizik bileşenini ele alır ve sahibini almak ve sınıfa göre bir bileşen bulmak için gereken bu
‫yinelenen kodu kaldırmalıdır.
‫Ayrıca bunu potansiyel olarak sabit hale getirip getiremeyeceğinizi görebilir ve günlüğe kaydedebilirsiniz.
‫Bir fizik kolu bileşenimiz yoksa, bir uyarı günlüğü verin, böylece ortaya çıksın ve yanlış bir şey yaptığımızı
‫bilelim.
‫Videoyu duraklatın ve deneyin.
‫Tamam.
‫Tekrar hoş geldiniz.
‫Her şeyden önce, bunu private bölümüne koyacağımız dosyanın başına gidiyoruz,
‫ancak Q özelliklerinin altında, bir U fizik tutamacı bileşeni döndürmesini sağlayacağım ve buraya bir yıldız işareti koyacağım.
‫Şimdi, bu türü burada başlıkta kullandığımız için, aslında include'umuzu almamız ve grabber'dan kesmemiz
‫gerekiyor.
‫Bu nedenle, fizik tutamacıyla ilgili olarak, onu üretilenin üzerine koyacağımız
‫grabber h'ye koymamız gerekir.
‫H Bu her zaman başlık dosyalarımızdaki son şeydir.
‫Peki neden CP'de de olması gerekmiyor?
‫Çünkü grabber h'yi de dahil ediyoruz.
‫Dolayısıyla, grab a H'ye koyduğumuz herhangi bir şey otomatik olarak C p'de olacaktır, böylece include'i oraya koyabiliriz.
‫Şimdi bu fonksiyonu tanımladığımız yere gidebilir ve ona get physics handle parantez çifti
‫diyebiliriz.
‫Ve bence bu, bu işlevi çağırmak için yakalayıcımızda hiçbir şeyi değiştirmemelidir.
‫Şimdi CP'ye gidelim ve tanımı yapıştıracağım yere gidelim, bir U yakalayıcı iki nokta üst üste
‫yapıştıracağım, önde iki nokta üst üste ve sonra noktalı virgülü kaldırıyorum, bir çift parantez
‫ekliyorum.
‫Yapmak istediğimiz şey, bu get over çizgisinin olduğu yeri almak ve bunu kesip
‫yerine get physics yazmak.
‫Bu şekilde tutun.
‫Ve sonra get physics handle'da, get owner find component by class'ı vb. basitçe döndürebiliriz.
‫ve şimdi bunu tik bileşeninde yaptığımız yerde de değiştirebiliriz, fizik tutamacını
‫tutuyoruz.
‫Bu küçük kod parçasını get physics handle ile değiştirelim.
‫Şimdi bu çok küçük bir kod parçası, neredeyse buna değmez, ancak bu noktada pratik yapmak ve şimdi
‫bazı günlük mesajları ekleyebileceğimiz ve oynamaya başlayabileceğimiz gerçeği için kesinlikle buna değer.
‫Aslında fiziğin işlemesine hiç ihtiyacımız yok, bu yüzden o kodu oradan kaldıracağım.
‫Ancak yapacağım şey bir günlük mesajı eklemek olacak.
‫Bu yüzden sonucumuzu burada saklamak için bir değişken oluşturacağız, çünkü geri dönüp bir günlük mesajı yazdırmaya çalışırsak
‫bu işe yaramayacaktır.
‫Bu yüzden result adında yeni bir fizik tutamacı bileşenimiz olacak çünkü buradan döndüreceğimiz
‫şey bu olacak.
‫Ve eğer sonuç null pointer'a eşitse, o zaman bir uyarı ya da aslında bir hata ile günlüğe kaydetmemiz gerektiğini
‫söyleyeceğiz.
‫Ve bir U fizik kolu bileşeni gerektirdiğini söyleyeceğiz ve ardından if ifadesinden sonra.
‫Yani bu olacak.
‫Null olsun ya da olmasın, sonucu döndüreceğiz.
‫Şimdi devam edip bunu derleyelim ve çalışıp çalışmadığını kontrol edelim.
‫Başarılı olmuş gibi görünüyor ve işe yaradığını görebiliyorum çünkü sahneye sol tıkladığımda mavi
‫veya hata ayıklama küreleri çiziliyor ve bu fizik tutamacı bileşenini tutmasaydık çizilmeyeceklerdi.
‫Harika bir şey.
‫Bu derste, bazen biraz güvenilmez olsa da, yakalayıcımızı kullanarak çirkin heykelimizi
‫yakalayabildik.
‫Ve bunu gelecek derslerde çözeceğiz.
‫Orada görüşürüz.