‫Merhaba ve hoş geldiniz.
‫Bu derste, olayları oyuncunun bakış açısından göreceğiz.
‫Esasen oyuncuların görüntü alanını, kameranın konumunu ve rotasyonunu alacağız, böylece
‫tetik düğmesine bastığımızda bir hata ayıklama kamerası çizebiliriz.
‫Buradaki küçük kırmızı adamlar, bize görüntü alanının nerede olduğunu gösteren bu küçük kırmızı kutu şeklindeki kameralar.
‫Ve bunu doğrulayabiliriz.
‫Bunu daha sonra silah için ışın izleme için kullanabiliriz.
‫Hadi içeri dalalım ve tüm bunları iş başında görelim.
‫Bu konuşmaya bir soruyla başlamama izin verin.
‫Dolayısıyla, görüntü alanınızdan bu şekilde nişan alıyorsanız ve ekranınızın merkezini D üzerinde D komut merkezi veya
‫sıfır komut merkezi ile hizalamaya çalışıyorsanız, bunun ne olması gerekiyorsa.
‫Neyi hedefleyeceğim?
‫Neyi vurmayı beklerdim?
‫Diyebilirsiniz ki, o sıfıra ulaşmasını beklerdim.
‫Sam, bu açık bir cevap gibi görünüyor.
‫Şey, işleri nasıl yaptığınıza, yeniden dökümünüzü nasıl yaptığınıza bağlı olarak, vuracağınız şey mutlaka
‫bu olmayabilir.
‫O halde yeniden döküm için sahip olduğumuz stratejilere bir göz atalım.
‫En bariz olanı, "Silahtan ateş ediyoruz, bu yüzden silahın namlusunu yeniden şekillendireceğiz" demenizdir.
‫Ya da bu arada, çok çok kaba olan bu kurulum, temelde bizim üçüncü kişi kurulumumuzdur.
‫Arkada bir kameramız var.
‫Karakterimiz var, silahımız var.
‫Ve şuradaki başka bir hedef karaktere ateş etmeye çalışıyor.
‫Öncelikle, silahı bu kadar saf bir şekilde yeniden şekillendirdik.
‫Belki de kameramız silahın doğrultulduğu yeri göstermediği için ıskalıyordur, her zaman değil.
‫Aynı yöne bakıyor olsalar da, birbirlerinden biraz uzaktadırlar, bu
‫nedenle aynı şeylere çarpmaları gerekmez.
‫Bunun yerine, kameradan yeniden döküm yapmak istediğinizi seçebilirsiniz.
‫Bu, kameranın baktığı şeyin vurulan şey olacağı anlamına gelir ve bu genellikle üçüncü şahıs
‫oyunlarında daha doğal hissettirir.
‫Birinci şahıs oyunlarında işler biraz daha yakınlaşıyor çünkü genellikle namluya çok yakın oluyorsunuz.
‫Ancak birinci şahıs oyunlarında bile bu kural geçerli olma eğilimindedir.
‫Hedefleme noktasının ekranda olduğu yerde hareket etmek istemezsiniz.
‫Genellikle ekranınızın ortasında yer alan küçük bir kullanıcı arayüzüne sahip olursunuz ve nişan
‫alacağınız yer burasıdır.
‫İşte bu yüzden ışın dökümümüzü bu görüntü alanındaki ışın dökümlü silahlarla yapma eğilimindeyiz.
‫Şimdi, neyse ki, bu görüntü alanını almamız için bir yol var ve bunu aslında denetleyiciden yapıyoruz, denetleyicinin
‫görüntü alanını alıyoruz.
‫Bu da karaktere gitmemizi, karakterin denetleyicisini bulmamızı ve ardından görüntü alanı konumunu ve
‫rotasyonunu bulmamızı gerektirir.
‫Ve bu derste yapacağımız şey, görüntü alanı konumunun ve dönüşünün beklediğimiz gibi olduğunu görselleştirmeye
‫ve doğrulamaya çalışmaktır.
‫Ve bunu bazı hata ayıklama yardımcıları çizerek yapacağız.
‫Şimdi hata ayıklama yardımcıları bir başlık dosyasında ve başlık dosyalarının adı bir hata ayıklama.
‫Yardımcılar.
‫Tuhaf bir şekilde, hata ayıklama yardımcılarını çizdiğime inanıyorum.
‫İşte o.
‫Ve eğer gidip buna bir göz atarsak F 12 eğer zaten içeriklerinizde varsa bir başlık
‫dosyasına gitmek için, camera draw debug camera adında bir tane arayacağız.
‫Bu da biraz benim şemama benzeyen bir şey çiziyor, biraz üçgen ya da
‫kullanabileceğimiz bir nostrum.
‫Peki ne alacak?
‫Dünyada o kameranın bir konumunu, söz konusu kamera için bir rotasyonu alacak.
‫Yani konum, rotasyon, görüş alanı.
‫Bunu muhtemelen 90 derece gibi varsayılan bir değere ayarlayacağız.
‫Bir ölçek var, bir renk varsayılanları var.
‫Bunların hepsi varsayılan olarak ayarlanmıştır.
‫Bu yüzden varsayılanları kullanabiliriz.
‫Şimdi silahımın içine bir hata ayıklama kamerası çizmeye çalışalım ve bunu tetik çekme yöntemine koyalım çünkü işimizi
‫bu yüzden yapıyoruz.
‫Her şeyden önce neye ihtiyacı var?
‫Yeni bir dünyaydı.
‫Böylece dünyamızı elde ederiz.
‫Ancak bir sonraki şey bir konum olacaktır.
‫Şimdilik sadece aktör konumunu alalım ve bir aktör rotasyonu da yapalım.
‫İhtiyacımız olan son şey ise bir görüş alanıydı.
‫Sadece rastgele bir şey olan 90 derecelik bir görüş alanı seçelim ve devam edip derleyerek bunun görünüp
‫görünmediğini görebiliriz.
‫Sonra da oynat tuşuna basalım.
‫Tetik düğmesi.
‫Burada bir şey göremiyorum.
‫Bir F-8 yapalım ve bakalım yaklaşabilecek miyiz?
‫Burada hala bir kamera görünmüyor.
‫Gerçekten çok küçük mü diye merak ediyorum.
‫Buradaki diğer seçeneklerden biri de kalıcı bir satıra sahip olmak isteyebileceğimizdir.
‫Bu da ölçeğimizi bire ayarlayabilmemiz için C++'da ona kadar olan her şeyi belirtmemiz gerektiği anlamına gelir.
‫Hatta belki de sorun boyutsa diye ölçeği ikiye bile çıkarabiliriz.
‫Daha görünür bir renk seçebiliriz, belki kırmızı.
‫Yani F rengi, iki nokta üst üste, iki nokta üst üste, kırmızı.
‫Sonra da ısrarcı çizgilerin doğru olmasını deneyebilir ve bunu deneyebiliriz.
‫Tekrar derliyorum.
‫Ve oyuna atlıyor.
‫Ve işte başlıyoruz.
‫Vurduk.
‫Tetikleyici.
‫Ve burada tetiğe bastığımız yerde küçük bir kamera kutusu gösterdiğini ve bunun dönüşünün ve konumunun silahlar,
‫konum ve dönüş tarafından ayarlandığını görebilirsiniz.
‫Şimdi bunun yerine görüntü alanını almayı denemek istiyoruz.
‫Daha önce de söylediğim gibi, bu bizim kontrolörümüzde olacak.
‫Şimdi Controller H'ye bakalım ve yine oyun çerçevesindekini istiyoruz ve burada
‫viewport'u arayacağız.
‫Pardon?
‫Aslında aradığımız kelime bakış açısı ve burada birkaç tane var.
‫Aktörün gözlerinden bakan bir bakış açısı elde edin.
‫Ancak aslında bir göz kontrolörü için gözlerini kullanacak, ancak bir oyuncu için oyuncunun kamerasını kullanacak olan
‫bakış açısını elde etmek istiyoruz.
‫Bizim istediğimiz de bu.
‫Oyuncuların görüşlerini almak istiyoruz.
‫Ancak her şeyden önce, ilk etapta o kumandayı ele geçirmemiz gerekiyor.
‫Ve bunu yapmanın yolu, her şeyden önce, sahibimizin atıcı karakterimiz CP'yi açtığımızda ve Başlangıç oyunumuza
‫gittiğimizde veya yukarı çıktığımızda, silahın sahibini karakter olarak ayarladığımızı hatırlamasını sağlamamız
‫gerekir.
‫Bu da silahta diğer yöne gidebileceğimiz anlamına geliyor.
‫Sahibini bul diyebiliriz ve bu bize tetikçi karakterini getirecektir.
‫Artık bir nişancı karakteri olduğunu bilmeyecek.
‫Tek bildiği bir aktör olduğudur.
‫Yani burada bir alçı yapmamız gerekecek.
‫Bu yüzden A Shooter karakterine bir rol vereceğiz.
‫Ve aslında, bir nişancı karakteri olduğu gerçeği kadar hiçbir şey bilmemize bile gerek yok.
‫Bir piyon olduğunu bilmek yeterlidir ve herhangi bir piyon, atıcı bir karakter olmasa bile bu silaha sahip
‫olabilir.
‫Bu yüzden mümkün olduğunca spesifik olmamaya çalışın.
‫Neden bir piyon olması gerekiyor ki?
‫Bir piyon olması gerekiyor çünkü bir kontrolör almamız gerekiyor ve sadece piyonlar kontrolörler tarafından ele geçirilebilir.
‫Bunu bir değişkene koyalım.
‫Bir -- yıldız olacak ve ardından sahip -- değişkenin adı olacak.
‫O zaman bunun null olmadığını kontrol etmemiz gerekir.
‫Ve bunu, null olması durumunda havuz tetikleyicimizden erken döneceğimizi söyleyen tek
‫bir satırla yapacağım, böylece null işaretçiyle herhangi bir şeyi çağırmaya çalışma riskimiz olmayacak.
‫Böylece bir piyon sahibi yapabiliriz, denetleyiciyi alabiliriz ve bunu A denetleyicisine kaydetmek isteriz.
‫Yıldız ve bu da sahibi olabilir.
‫Kontrolör.
‫Bu şekilde.
‫Ve yine, bunun null olmadığını kontrol etmek istiyoruz çünkü bunun üzerinde
‫bir yöntem çağıracağız ve null işaretçiler üzerinde yöntem çağıramayız.
‫Gerçek dışı, mutsuz ve çökmüş hale getirir.
‫Artık sahip denetleyicimizi burada yapabiliriz.
‫Ve bir bakış açısı elde etmek için bunu arayabilmeliyiz.
‫İşte size bu konumu ve rotasyonu ayarlamanız için bir meydan okuma geliyor.
‫Bu yeni fonksiyonu kullanarak, bunun imzasını görebilirsiniz.
‫Yine, dosya öncesinde Kontrolör H'ye gidiyoruz ve bir bakış açısı elde etmek için buna bakıyoruz.
‫Bu imzadan, draw debug yardımcımıza iletmek istediğimiz konumu ve rotasyonu elde etmek için nasıl
‫kullanacağınızı bulmaya çalışın.
‫Ve böylece bunun parametreleri kullandığını hatırlayacaksınız.
‫Bu yüzden çıkış parametrelerinizi gözden geçirin, az önce yazdığımız kod parçacığını kullanarak hata ayıklama kamerasını çizin ve görüntü
‫alanında test edin.
‫Gidip tetik düğmesine farklı konumlarda birkaç kez tıklayın ve kameranın nerede duraklatılmış video
‫gösterdiğine bakın ve deneyin.
‫Tamam.
‫Tekrar hoş geldiniz.
‫Bu yüzden bir bakış açısı edinin.
‫Yöntemin adını kopyalayıp buraya getireceğim çünkü bu bir out parametresidir.
‫Öncelikle bu değerlerin girmesini istediğim değişkenleri bildirmem gerekecek.
‫Bir F vektör konumum var.
‫F rotator rotasyonumuz var.
‫Ve bunları argüman olarak iletmek istiyoruz.
‫Girintilerimi biraz düzeltmeme izin verin.
‫Ve rotasyonun yerini değiştireceğiz.
‫Ve bunu okurken burada bildirildiği için, C++'ın bu konuda herhangi bir sözdizimi yardımı olmamasına
‫rağmen, bunların artık dışarıda parametreler olduğunu tahmin edebiliriz.
‫Daha sonra aktör konumu yerine bu konumu ve aktif rotasyon yerine
‫bu rotasyonu hata ayıklama kameramıza aktarabiliriz.
‫Ve devam edip bu derlemeyi oluşturabilir ve editörde deneyebiliriz.
‫Derleme tamamlanmış gibi görünüyor.
‫Hadi gidip oynayalım.
‫Tetiğe bastığımda, bakış açımın tam üzerinde bir kamera beliriyordu.
‫Bu iyiye işaret.
‫Biraz geri çekilirsem, orada olduğunu görebilirsiniz.
‫Az önce baktığım yerden tam olarak doğru yönü gösteren kameralarımız var.
‫Yani kameranın ucundan aşağıya doğru bir ışın gönderip o sırada baktığım
‫bir şeyi vurmayı nasıl deneyebileceğimizi hayal edebilirsiniz.
‫Bir sonraki derste yapacağımız şey de bu olacak.
‫Orada görüşürüz.