‫Merhaba ve hoş geldiniz.
‫Bu derste, bir onay kutusunu işaretleyerek taşıyıcımızın biraz hareket etmesini sağlayacağız.
‫Sabit bir hızda hareket etmesini ve ilerlemesini sağlayacağız.
‫Ve bunu bu kez içeriden bazı kütüphane işlevlerini kullanarak yapacağız.
‫Gerçek dışı.
‫Böylece başlık dosyaları ve içerikler hakkındaki tüm bilgimizi test etmiş olacağız.
‫İçeri dalalım ve nasıl çalıştığını görelim.
‫Bu taşıyıcının çalışmasını istediğim yol, başladığı yerden belirli sayıda saniyelik bir süre boyunca bir hedef
‫ofsete sorunsuz bir şekilde hareket etmesini istiyorum.
‫Bunu yapılandırmak için kullanacağımız yol, başlık dosyasına bazı yeni özellikler eklemektir.
‫Bu yüzden dosyanın başına özel bir bölüm ekleyerek başlayalım ve ardından
‫herhangi bir yerde düzenlenebilecek yeni bir özellik ekleyeceğiz, bu özellik ofseti, taşıma ofsetini tanımlayacak.
‫Peki bu taşıyıcı etkinleştirildiğinde ne kadar uzağa hareket etmelidir.
‫Bunu yapmanın yolu bir F vektörü kullanmak olacak ve buna hareket ofseti diyeceğiz, bu yüzden
‫varsayılan bir değer vermeyeceğim.
‫Bunu editörde yaparız.
‫Ardından, yine herhangi bir yerde düzenle olacak yeni bir özellik daha oluşturacağım,
‫bu da hedefe gitmek için gereken süre olacak.
‫Bu yüzden bunun bir float, yani hareket süresi olmasını sağlayacağız ve bunu varsayılan değer olarak 4 saniye olarak
‫ayarlayacağım.
‫Şimdi, buraya koymak istediğim bir şey daha var, bu şimdilik bir Boolean, bu boolean'ı
‫etkinleştirdiğimizde aşağı hareket etmesi için taşıyıcıyı etkinleştirmemize izin verecek.
‫Şimdi tekrar başka bir U özelliği oluşturalım.
‫Oynatırken bile düzenleyebilmemiz için herhangi bir yeri düzenleyin ve hareket etmeli diyen bir boolean olacak ve
‫varsayılan olarak false olarak ayarlanacaktır.
‫Bu yüzden düzenleyicide bunu işaretlediğimizde, oynatırken, gidip hedef hareket ofsetine hareket
‫edecektir.
‫Daha önce hareketli bir bileşenimiz olduğunda tüm adımları manuel olarak gerçekleştiriyorduk.
‫Ancak size aslında ihtiyacımız olan hesaplamaların çoğunu yapmak için yerleşik bazı işlevler olduğunu göstermek
‫istiyorum.
‫Unreal'da yerleşiktir ve V yorumlama sabiti adında bir işlev de vardır.
‫Bu konuda ilginç olan şey, açıklamalara bir göz atalım.
‫Yani sabit bir adım kullanarak bir vektörü mevcut bir vektörden hedef bir vektöre enterpole edin.
‫Yani bu, zaman içinde mevcut durumdan hedefe belirli bir hızda hareket edeceğimiz ve bunu sürekli olarak yapacağı anlamına geliyor
‫ki bu da tam olarak istediğimiz şey gibi görünüyor.
‫Mevcut konumumuzdan hedef ofset konumuna sabit bir hızda hareket etmek istiyoruz.
‫Şimdi, bu fonksiyonun sözdizimine bakarsanız, F vektörünün bir dönüş türüne sahip olduğunu
‫görebilirsiniz.
‫Yani bu, enterpolasyon yaptığı yeni konumdur.
‫O zaman iki girişi vardır.
‫Mevcut bir F vektörümüz var ve şimdilik bu etkinin etrafındaki diğer semboller hakkında endişelenmeyin,
‫sadece önemli olan bunun bir akım vektörü olması ve ardından sonunda ulaşmasını istediğimiz
‫hedef.
‫O zaman delta zamanı vardır.
‫Böylece hareketi kare hızından bağımsız ve enterpolasyon hızında yapmak için bunu kullanır.
‫Peki mevcut konumumuzdan hedefe doğru ne kadar hızlı hareket etmeliyiz?
‫Şimdi burada belgelerde aslında include yazan bir bölüm olduğunu fark edeceksiniz ve bu size bu fonksiyonu
‫kullanabilmek için C++ dosyanızda ihtiyaç duyacağınız include satırını söyler.
‫Önceki videoda gördüğümüz gibi, include satırı bu dosyadaki tanımları kopyalamamızı
‫sağlar.
‫Tanımlardan biri de bu fonksiyonun tanımıdır.
‫Dolayısıyla, bu V yorumlama sabitini kullanmamıza izin verir, şimdi bu fonksiyonun önündeki V temel olarak vektörler üzerinde enterpolasyon
‫yaptığı anlamına gelir.
‫Bu kütüphane dosyasında da bulunan diğer enterpolasyon fonksiyonlarının aksine V yorumlama olarak adlandırılmasının
‫nedeni budur.
‫Şimdi bunu nasıl kullanacağımıza bir göz atalım.
‫Her şeyden önce, include satırını dokümantasyondan kopyalayacağız ve bunu tick bileşeninin
‫gövdesinde uygulamak istediğimiz CP hamlemize geçeceğiz.
‫Ancak kene bileşeninin gövdesine dahil etmiyoruz.
‫Dahil etme işlemini dosyanın en üstünde yapmamız gerekiyor.
‫Ben de benimkini buraya koyacağım ve H taşıyıcısının dahil edilmesinden sonra benimkini koyacağım.
‫Bu yüzden matematik, ileri eğik çizgi, gerçek olmayan matematik yardımcı programını ekleyeceğiz.
‫H Şimdi yapabileceğimiz şey, bu fonksiyonu tick bileşenimiz içinde kullanabilmektir.
‫Halihazırda içine yerleştirdiğimiz koddan kurtulalım.
‫Hesapla.
‫Çünkü bunu diğer aktörler üzerinde fonksiyonları nasıl çağıracağımızı anlamak için kullanıyorduk.
‫Ve yapmamız gereken şey, yukarı kaydırırsanız, bunu çağırmanın yolunun F Mass Colon, Colon V Intercept, sabit iki olduğunu
‫görebilirsiniz.
‫Bu yüzden, tüm bu matematik yardımcı programlarını bir araya getiren F matematik sınıfının içine bakan bu iki nokta
‫üst üste operatörünü yapıyoruz.
‫Yani F matematiği yapacağız.
‫Kolon.
‫Burada, az önce bu dosyaya eklediğimiz başlık dosyasında yer alan farklı matematik fonksiyonları için
‫gelen bir grup otomatik tamamlamayı görebilirsiniz.
‫Böylece bir göz atabilir, ilginç şeylerden herhangi birinin burada olduğunu görebilirsiniz,
‫bir sürü enterpolasyon, dairesel enterpolasyon vb. görebilirim. ancak V yorumlama sabitini istedik ve bunu tamamlamak
‫için tab tuşuna basabilir ve ardından bazı parantezler açabiliriz ve akım, hedef delta zamanı ve kesişme
‫hızında geçmemiz gereken argümanları görebiliriz.
‫Şimdi bunlardan bazılarını tutmak için bazı değişkenler oluşturmaya başlayalım.
‫Her şeyden önce, mevcut konumumuz olacak bir F vektörüne ihtiyacımız var ve bunu henüz ayarlamayacağız.
‫Sonra hedef konum için bir F vektörümüz olacak ve ardından hız için bir float alacağız.
‫Ve bu hareketi nasıl gerçekleştirebileceğimizi bulmak için bunların her birini ayrı ayrı hesaplamamız gerekecek.
‫Dolayısıyla mevcut konum nispeten daha kolay olacak.
‫Sahip olan aktörün mevcut konumunu almamız gerekiyor.
‫Peki bunu nasıl yapacağız?
‫Bu noktalı virgülü eşittir işaretiyle değiştirelim.
‫Sonra bir get owner parantez çifti yapacağız.
‫Sonra bir ok yapacağız.
‫Bu yüzden, sahip olunan aktör üzerinde bir fonksiyon çağıracağız ve aktörün konumunu alacağız ve ardından bir çift parantez ve
‫noktalı virgülle sonlandıracağız.
‫Bu da bize sahip olan aktörün mevcut konumunu verir.
‫Peki ya hedef konumumuz ne olacak?
‫Hareket ofseti adında bir özelliğimiz olduğunu biliyoruz, dolayısıyla bu özellik burada devreye girecek.
‫Ancak orijinal konumu bu taşıma ofsetine eklememiz gerekir.
‫Bunun için Biggin oyunundaki orijinal konumu yakalamamız gerekiyor.
‫Bu yüzden onu saklamak için bir değişkene ihtiyacımız var.
‫Şimdi taşıyıcımız H'ye gidelim ve hiçbir yerde düzenleme yapmayalım.
‫Bir kere U'nun altına koyacağım.
‫Özellikler, Orijinal Konum adında bir F vektörü olacak.
‫Burada herhangi bir şeye ayarlamayacağız.
‫Sonra taşıyıcı CP'mize gidip oyuna başlayacağız, bu yorum
‫satırını kaldıracağız ve kendi kodumuzu koyacağız, bu da orijinal konumun get owner parantez ok get actor konumuna eşit olacağı
‫şeklinde olacaktır.
‫Artık orijinal konumumuzu yakaladığımıza ve oynatmaya başladığımıza göre, bunu TTIC'de kullanabiliriz.
‫Bu yüzden Tick'e giriyoruz ve hedef konumumuzu orijinal konum artı taşıma ofsetine eşit olarak ayarlıyoruz.
‫Bu bizim hedef konumumuz ve son olarak da hızımız.
‫Bu, esasen hareket etmemiz gereken mesafenin hareket etmemiz gereken zamana bölünmesidir.
‫Dolayısıyla, bir hedef konumumuz ve bir orijinal konumumuz varsa, bu ikisi arasındaki mesafeyi bulmamız
‫gerekir; bunu da bir F vektörü, iki nokta üst üste, iki nokta üst üste mesafesi ile yapabiliriz.
‫Ardından parantezlere orijinal konumu ve hedef konumu aktarırız.
‫Bu da bize bu iki vektör arasındaki mesafeyi verir.
‫Sonra da bunu taşınma süresi olarak adlandırdığımız süreye böleceğiz.
‫Bu da bize hareket etmemiz gereken hızı verir.
‫Ve şimdi bunları V'nin de sabit kalmasını sağlamak için argüman olarak kullanabiliriz.
‫Bu yüzden öncelikle ona mevcut konumu ve ardından hedef konumu vermemiz gerekiyor.
‫Sonra ona Delta zamanını söyleyeceğiz, ki bu zaten tick bileşeninde bir parametredir.
‫Bu yüzden sadece bunu geçirmemiz gerekiyor ve sonra durdurma hızına sahip oluyoruz.
‫Bu nedenle, bu satırın sonuna noktalı virgül koyar gibi hızı aktaracağız ve bu aslında
‫yeni konumdur.
‫O halde bunu yeni konum adında yeni bir F vektör değişkenine depolayalım.
‫Şimdi bu yeni konumla bir şeyler yapmamız gerekiyor çünkü bunu sadece hesaplamak
‫iyi değil, aktörü gerçekten yeni konuma taşımamız gerekiyor.
‫Yani yapacağımız şey bu.
‫Sahibini bul diyeceğiz.
‫Biz de kendimizinkini alırız.
‫Parantez Ok.
‫Sonra bir aktör konumu belirleyeceğiz ve yeni konumu bu şekilde gireceğiz ve satırın sonuna noktalı
‫virgül koyacağız.
‫Şimdi devam edip bunu derleyelim ve çalışıp çalışmadığını görelim.
‫Zindana gidip taşımak istediğimiz duvarı seçersek, şimdi
‫taşıyıcı bileşenin bir hareket ofseti olduğunu görebilirsiniz, bunu Z yönünde yapmak isteyeceğim
‫ve sanırım -600 yapacağım.
‫Ve sonra hareket süresi, 4 saniye yeterli olacaktır.
‫Bunu kaydedelim ve ardından oynat düğmesine basarak hareket edip etmediğine bakalım.
‫Ve çıktı günlüğünde aktörün hareketliliğinin statik olarak ayarlandığını söyleyen bir hata var, bu yüzden
‫hareket edemiyor.
‫Dolayısıyla, aktörü tekrar seçer ve hareketlilik ayarlarına bakarsak, aslında statik ağ bileşeninin hareketlilik ayarlarını
‫görebilirsiniz.
‫Bu yüzden statik ağ bileşenini seçin, ardından hareketliliğe bakın.
‫Statik olarak ayarlandığını görebilirsiniz, bu da temelde hareket etmesine izin verilmediği anlamına gelir.
‫Bunu hareketli olarak değiştirelim çünkü hareket etmesini istiyoruz ve sonra devam edip oynat düğmesine basalım.
‫Şimdi karanlıkta duvarın yıkıldığını görebiliyorsunuz ki bu mükemmel bir şey.
‫Sanırım sahnemizin başka bir yerinde, bu sütunun üzerinde de hareket etmeye çalışan bir hareket ettirici
‫var.
‫O yüzden bunu yapmayalım.
‫Sadece test etmek için eklediğimiz mover bileşenini silelim ve çıktı günlüğünde bize hata vermemelidir.
‫Şimdi devam edip oynat düğmesine basarsak, duvarın hedef konuma inmesi gerekir.
‫Öyleyse, oluşturduğumuz boolean ile onu hareket ettirmeniz için size meydan okuyalım.
‫Bu yüzden kodu uygun bir if deyimine ve uygun koda saracaksınız, böylece platformu
‫yalnızca Boolean doğru olduğunda hareket ettirecek.
‫Daha sonra kodu yeniden derleyecek ve F8'i kullanarak oynatacak ve çıkaracak ve ardından boolean'ı değiştirecek ve
‫bu boolean'ı kontrol ettiğinizde hareket edip etmediğini gözlemleyeceksiniz.
‫Videoyu durdurun ve bir deneyin.
‫Tamam.
‫Tekrar hoş geldiniz.
‫Şimdi gidip bu tik bileşenini bir if deyimine saralım, süper değil ama yapacağımız diğer her
‫şeyi.
‫Eğer taşınması gerekiyorsa, birkaç parantez açın ve tüm bu kodu bir seviye girintilemeyi unutmadan taşıyın çünkü parantezlerin içindeyiz
‫ve bunun yalnızca if deyimi içinde yürütüleceğini göstermek istiyoruz.
‫Derlemek için tüm f 11 kontrollerini okumamızı kolaylaştırın ve sonra gidip oynat düğmesine basabilmeli
‫ve faremizi yakaladıysak çıkarmak için F sekiz'e basabilmeliyiz.
‫Ve sonra aykırı değerimize bir göz atacağız, duvarı bulmaya çalışacağız ya da sadece sahneye tıklayabiliriz
‫ve sonra bir bileşeni taşı'yı seçeceğiz ve hareket etmeli'yi kontrol edeceğiz ve gidecekler,
‫bu olduğunda duvar hareket etmeye başlar.
‫Harika bir şey.
‫Bir sonraki derste görüşmek üzere.