‫Merhaba ve hoş geldiniz.
‫Bu derste, duvarlara ateş edebilmek ve bu hata ayıklama noktalarının ortaya çıktığını görebilmek için
‫bazı satır izleme ayarlarını yapacağız.
‫Ve bunu yeni bir fonksiyon olan kanala göre satır takibi kullanarak yapacağız ve bunu neden daha
‫önce kullandığımız nesne türüne göre satır takibi yerine kullandığımızı göreceğiz.
‫Hadi içeri dalalım ve nasıl yapıldığını görelim.
‫Bina kaçışımıza geri döndüğümüzde, çizgi izlerini kullandık ve buradaki bu işlevi, nesne türüne göre çizgi
‫izini kullandık.
‫Peki kullanmak istediğimiz şey bu mu?
‫Peki, nesne türüne göre çizgi izleme ile çok yakın kardeşi olan kanala göre çizgi
‫izleme arasındaki fark nedir?
‫Nesne türü, bu satırda arama yapmak ve bu türle eşleşen bir nesne bulup bulamayacağıma bakmak istediğimi söylüyor.
‫Sanırım kaçışı inşa ederken kullandığımız şey fizik cismi nesne türü gibi bir şeydi ve bu harika,
‫fizik cisimlerine çarpacak.
‫Ancak aniden topa başka bir şeyin vurulmasını istediğinize karar verirseniz, seçeneklere fazla yer
‫kalmaz.
‫Bu nedenle kanal bunun için daha iyidir çünkü kendi özel kanallarımızı tanımlamamıza ve ardından hangi tür nesnelerin
‫bu kanala şeffaf olduğunu ve hangilerinin onu engellediğini tanımlamamıza olanak tanır.
‫Bu harika çünkü yapmak istediğimiz şey, tamam, belki Bush tipi bir şey bir mermiyi engelleyemez, oysa bir duvar
‫bir mermiyi engelleyecektir, ancak herhangi bir hasar almayacaktır, ancak daha sonra bununla başa
‫çıkabiliriz.
‫Yani kanallar gideceğimiz yoldur ve burada kontrol yaparak doğru yöntemi bulabiliriz.
‫P Bu arada, daha yeni öğrendiğim bir şey daha var: ACT sembolünü kullanırsanız,
‫bu dosyadaki ve hatta diğer dosyalardaki sembolleri arayabilirsiniz, ancak dosya açıksa çok daha
‫hızlıdır.
‫Sonra satır izleme gibi bir şey yapabilirsiniz ve orada bize fonksiyonlar, sınıflar veya değişkenler olan tüm
‫sembollerin listesini verdiğini görebilirsiniz ve bu satırı, izi, test satırını, izi, nesne türüne göre kanala
‫göre tek tek bulabiliriz.
‫Vurduğumuz şey için bir çıkış parametresine sahip olacak olan bu ilk tek satırlık izi, tek BI kanalını
‫istiyoruz.
‫Başlangıç noktası, bitiş noktası, çarpışma izleme kanalı birazdan gelecek ve ardından bazı varsayılanlara
‫sahip bazı sorgu parametreleri var, bu yüzden aslında endişelenmemize gerek yok.
‫Bu yüzden sadece ilk birkaç şey, Outhit Start, end ve Trace Channel endişelenmek istediğimiz şeylerdir.
‫Bir Trace kanalı kuralım.
‫Bunun için ayarlara ve proje ayarlarına gideceğiz.
‫Ve sonra çarpışma alanı için motorun altına bakıyoruz.
‫Ve buranın altında nesne kanallarımız ve izleme kanallarımız olduğunu görebilirsiniz.
‫Nesne kanalları aslında farklı nesne türlerini söylemenin başka bir yoludur.
‫Dolayısıyla, piyonlar ve bunun gibi varsayılan nesne setlerinin yanı sıra yeni bir nesne
‫kategorisine sahip olmak istiyorsanız, nesne kanalı yoluna gidebilirsiniz.
‫Ancak izler, spektrumun diğer ucunu tanımlamanıza izin verir, yani bir mermim var, hangi
‫nesneleri vurabilir?
‫Bu yüzden bu yoldan gideceğiz, yeni bir izleme kanalı ekleyeceğiz ve buna bullet adını vereceğiz.
‫Ve varsayılan yanıt şu olacak.
‫BLOCK Bu da temel olarak tüm nesne türlerinin
‫BLOK Şimdi aksini belirtmediğimiz sürece, devam edip bunu kabul edebiliriz ve buradaki ön ayarlarımıza bakabiliriz.
‫Bunu genişletirsek, ön ayarlar size uygulayabileceğimiz bir dizi farklı şeye sahip olduğumuzu
‫gösterecek, diyebileceğimiz şeyler, bunun bir fizik aktörü olmasını istiyoruz, bu durumda nesne
‫türü, önceden tanımlanmış bir nesne kanalı olan fizik gövdesi olacaktır.
‫Ancak bunu genişletirsek, buradaki farklı iz türlerine tepkisinin ne olduğunu görebilirsiniz.
‫Yani iz tipleri kameramız var, kendi mermi görünürlüğümüz var, bunların hepsini engelliyor ve sonra nesne
‫tipleri var.
‫Yani piyonlar ve araçlar gibi diğer nesnelerle fizik açısından bu şekilde etkileşime girer. Nesneye göre çizgi izleme ile bu
‫şekilde etkileşime girmez.
‫Bu biraz kafa karıştırıcı ve daha önce benim de kafamı karıştırmıştı.
‫Dolayısıyla, ilginç olan izleme türüdür ve buraya gidip bir göz atabilir ve hiçbir çarpışmanın çarpışmamaya ayarlanmaması
‫gerektiğini görebiliriz.
‫Bu yüzden mermilerimizin bununla da çarpışmamasını sağlayalım.
‫Bu nedenle, mermimizin beklediğimiz gibi çalışması için bazı ön ayarları geçersiz kılmak yeterlidir; örneğin,
‫tümünü örtüştür, temelde mermiyle örtüşmelidir.
‫Ve muhtemelen görünmez duvar ve görünmez duvar dinamiği de mermimizin amaçları doğrultusunda göz ardı edilmelidir.
‫Buradaki dinamikle aynı.
‫Temelde görünürlük izine oldukça benzeyen bir şeyle sonuçlandığımızı görebilirsiniz.
‫Ancak bunu ayrı tutmamızın nedeni, küçük ayrımlar yapmak isteyebilmemizdir, örneğin görebilirsiniz,
‫bu çalının arkasını göremezsiniz, ancak içinden ateş edebilirsiniz.
‫Bu tür şeyler, kendi izleme kanalımıza sahip olmanın gerçekten çok kullanışlı olduğu anlamına geliyor.
‫Şimdi bu izleme kanalını kodda kullanabilmek istiyoruz ve bunu nasıl yapmamız gerektiği biraz garip çünkü
‫burada bir enum var, bir E çarpışma kanalı ve F12 ile tanımına gidersek, önceden tanımlanmış olanlar için bir grup olduğunu
‫görebilirsiniz, dünya statik -- görünürlük vb. burada, ancak daha sonra bir grup
‫motor izleme kanalı bir, iki ve Oyun İzleme Kanalı bir, iki, üç, vb.
‫var. önceden tanımlanmış.
‫Bu bizimkilerden hangisi?
‫Biliyorsun, burada mermimiz yok.
‫Aslında bu oyun izleme kanallarından birini kullanmamız gerekiyor.
‫Yani gerçekten biraz kafa karıştırıcı.
‫Hangisi o?
‫Bunu yapmanın yolu proje klasörünüze gitmek ve yapılandırmaya girmektir.
‫Ve istediğimiz şey varsayılan motor INI'si ve bunu bir metin düzenleyicide açmak istiyoruz.
‫Yani bunu istediğiniz herhangi bir metinde yapabilirsiniz.
‫Visual Studio koduna sürüklemeyi seviyorum, böylece Visual Studio kodu onu açan kişi olur.
‫Ve burada esasen mermimizi aramak ve neye atandığını görmek istiyoruz.
‫Ve sanırım buradaki ilk satır bize verilen kanalın oyun İzleme Kanalı bir olduğunu söylüyor.
‫Harika.
‫Dolayısıyla, hat takibimizi yaparken kullanacağımız şey budur.
‫Şimdi bu hat izinin yapısını oluşturmaya başlayalım.
‫İhtiyacımız olan ilk şey bir başlangıç noktası.
‫Bizde zaten var.
‫Bu bizim görüntü alanımızın konumu.
‫Ayrıca çizgi izimiz için hesaplaması biraz daha zor olan bir bitiş noktasına ihtiyacımız olacak.
‫Sonumuz için bir F vektörü oluşturalım ve bunu durma noktamızı, artı rotasyonun miktarla
‫çarpımını, uzaklaşmak istediğimiz mesafeyi kullanarak hesaplayacağız.
‫Döndürme değil, döndürme yönünü gösteren bir vektör biraz kafa karıştırıcı
‫gelebilir, ancak aslında döndürme vektörü yaparsanız, bu size bu döndürme yönünü gösteren bir vektör verir.
‫Bir vektörden rotasyon elde etmek için animasyon planında yaptığımızın tam tersini yapıyor.
‫Bu da diğer tarafa gidiyor.
‫Bu yüzden konum artı bu rotasyon vektörünü yapacağız ve sonra esasen bir maksimum aralık istiyoruz.
‫Bu yüzden buraya yeni bir özellik ekleyeceğim, bunu herhangi bir yerde düzenle yapacağım ve Max
‫Range adında bir değişken olacak.
‫Ve bunu varsayılan olarak 10.000 veya bin maksimum aralık gibi bir şeye ayarlayabiliriz.
‫Bu yaklaşık 100 metre, pardon, yaklaşık 10 metre olacak.
‫Ve maksimum aralık ile çarpılmış rotasyon vektörüne gideceğiz.
‫Dolayısıyla, bu rotasyondan elde ettiğimiz vektör bir boyutta olacaktır.
‫Maksimum aralık ile çarpıldığında, maksimum aralık ne olursa olsun, boyutta bir vektör haline gelecektir.
‫Daha sonra bunu konumun üzerine ekleyerek bitiş noktasını elde ederiz.
‫Matematiği %100 takip edemiyorsanız endişelenmeyin.
‫Önemli olan, son noktamıza bu şekilde ulaşmak istememizdir.
‫Daha sonra buraya bir yapılacaklar satırı koyarak satır takibi ekleyeceğim ve bu hata
‫ayıklama kamerasını kaldıracağız çünkü burada farklı bir hata ayıklama yardımcısı yapmak istiyorum.
‫Burada bulabileceğiniz bir hata ayıklama noktası çizmek istiyorum.
‫Dünyayı içine alır, bir konumu, bir boyutu ve bir rengi içine alır.
‫Kalıcı olsun ya da olmasın, muhtemelen kalıcı olmasını, görünür olmasını istiyoruz.
‫Dolayısıyla bu doğrultuda bir şeyler yapabilmeliyiz.
‫Bakalım, hata ayıklama noktası çizin ve burada hemen bir get world yapacağız ve sonra bunun yerine viewport'umuzun
‫konumuyla başlayacağız, sadece bu hata ayıklama noktasının nasıl çalıştığını görmek
‫için bir test olarak, ona kırmızı bir f rengi vermek için boyut verin ve kalıcılığını doğru yapın.
‫Ve sonra noktalı virgül için büyük harf kullanacağız ve bunun motorda derlemeye basıldığında çalışıp çalışmadığını
‫göreceğiz ve oynat düğmesine basalım.
‫Şimdi ateş edip biraz geriye gidersem, orada bir nokta olduğunu görebilirsiniz.
‫Ancak, gerçekten çok küçük ve görülmesi zor.
‫Bu yüzden bunu 20'ye çıkaracaklar.
‫Bakalım bu daha mı iyi.
‫Derleyin ve oynayın.
‫Evet.
‫Elbette, şimdi çok ama çok net bir noktayı görebiliyorum.
‫Şimdi sıra kanal bazında çizgi takibi yapmaya geldi.
‫Bunu daha önce nesne türleriyle yapmıştık, umarım bunu kanala göre yapmaya da uyarlayabiliriz.
‫Bu nedenle, başlangıç ve bitiş olarak önceden tanımladığımız konumu ve sonu kullanın.
‫Bir if deyimi yaparak sonucun başarısını kontrol edin.
‫Yani sadece çıkış parametresini almak veya isabet sonucunun parametresini almak ve sadece bir hata ayıklama noktası çizmek.
‫Noktayı başarıyla vurursak ve nokta INI dosyasında bulduğumuz kanalı da kullandığımızı
‫hatırlarsak.
‫Bu yüzden videoyu duraklatın ve tüm bu parametreleri ve argümanları satır izinde sıralayıp
‫sıralayamayacağınıza bakın ve satır izimizle vurduğumuz hata ayıklama noktasını çizin.
‫Şimdi bu aşamada oyuncu aktörü yok saymak gibi akıllıca bir şey yapmıyoruz.
‫Yani çizgi takibiniz oyuncuya çarpabilir ve bu meydan okuma için sorun değil.
‫Videoyu duraklat.
‫Bir dene bakalım.
‫Tamam.
‫Tekrar hoş geldiniz.
‫Öyleyse hemen başlayalım.
‫Her şeyden önce dünyayı alacağız ve ona bir ok yapacağız.
‫Kanal bazında tek bir çizgi izlemesi yapacağız.
‫O zaman isabetli bir sonuca ihtiyacımız olacak.
‫Bu yüzden parametremiz, ilk olarak bir out parametresi olarak geçmek için hit result struct'ımızı bildirmemiz gerekir.
‫Buna hit diyecek ve ilk argüman olarak buraya aktaracağız.
‫O zaman bize yer lazım.
‫Ve sona ihtiyacımız var.
‫Sonra ne olacak?
‫Sırada ne var?
‫E çarpışma e çarpışma kanalı.
‫Yani bu bir E çarpışma kanalı olacak.
‫Kolon.
‫Ve sonra e c olmalı, ne demiştik?
‫Hadi gidip varsayılan motora bir göz atalım.
‫Herhangi bir e cc oyun izleme kanalı bir, varsayılan herhangi birinin yapılandırdığı kanaldır.
‫Burada ihtiyacımız olan başka bir argüman var mı?
‫Hadi gidelim.
‫Varsayılan çarpışma parametrelerimiz var.
‫Yani hayır, burada hiçbir şeye ihtiyacımız yok.
‫Ve sonra yapabileceğimiz şey, bunun için bir boolean sonucuna ihtiyacımız olmasıdır.
‫Yani B başarısı.
‫Ve kulağa çok faydalı geliyor.
‫Bu başarı değil mi?
‫Diyelim ki bir if başarılı olsun.
‫Bu hata ayıklama noktasını çizmek isteyeceğiz.
‫Bunu aşağıya taşıyacağız.
‫Bunu Alt ile yapabilirim ve sonra ok bir çizgiyi bu şekilde hareket ettirir ve sonra bir kontrol ve klavyenizdeki
‫sağ köşeli parantez ile girinti yapabilirim ve bu şekilde görünmesini sağlar.
‫Ve şimdi başlangıç noktası olan konum yerine, aslında isabet konumunu istiyoruz.
‫Yani bu şekilde nokta konumuna vurulacak.
‫Görünüşe göre bu satırın sonunda noktalı virgül eksik.
‫Bunu inşa edelim ve bir deneyelim.
‫Bunları derledikten sonra, play tuşuna basalım, dünyaya gidelim ve duvarlarımıza ateş etmeye çalışalım.
‫Al bakalım.
‫Tam çekim yaptığım yerde duvarda bir nokta belirdiğini görebilirsiniz.
‫Bunu birden fazla kez yapabilirim.
‫Bir duvardan çok uzaklaşırsam vuruyor gibi görünüyor, maksimum menzilimiz oldukça kısa olduğu için hiç vurmuyor.
‫Ve maksimum menzile girdiğimde vurduğunu ve bir nokta çizdiğini görebilirsiniz.
‫Yani bu görev başarıyla tamamlandı.
‫Artık belirli bir noktayı gösterebiliyor ve çizgi izleyebiliyoruz.
‫Bir sonraki adım, bunun bazı parçacık efektlerini gerçekten göstermesini sağlamak olacak, bu da bunun için bir hata
‫ayıklama noktası çizmekten çok daha havalı olacak.
‫Bir sonraki derste görüşürüz.