Örnek sorular
Gp Camera Follow TargetingZorluk 1
Bir takip kamerası konumunu her karede pos = lerp(pos, target, 0.1) ile, kare süresinden bağımsız sabit bir 0.1 değeriyle güncelliyor. Bu ne soruna yol açar?
- aKamera konumu saniyede bir kez rastgele bir değer alır
- bKamera 30 karenin altında güncellenmeyi tamamen durdurur
- cYakalama hızı kare hızına göre değişir✓
- dHedef konumu her karede kamera konumuyla üzerine yazılır
Açıklama:Sabit bir oranı her karede bir kez uygulamak, bu oranın gerçek saniyede kaç kez uygulanacağının kare hızına bağlı olması demektir; bu yüzden aynı sabit, düşük kare hızlı bir makinede daha yavaş, yüksek kare hızlı bir makinede daha hızlı yakalama üretir. (a) ve (b) bu koddan çıkmayan arızalar, (d) atama yönünü tersine çeviriyor.
Gp Camera Follow TargetingZorluk 2
QA, aynı build ile pos = lerp(pos, target, 0.15) her render karesinde bir kez çağrılırken, takip kamerasının yüksek yenileme hızlı test monitöründe referans 60Hz monitöre göre belirgin şekilde daha "ani/sert" hissettiğini bildiriyor. En olası neden nedir?
- aSabit 0,15 oranı yüksek kare hızında gerçek saniyede daha çok kez bileşiyor✓
- bYüksek yenilemeli monitör render çözünürlüğünü ölçekliyor ve kameranın görüş mesafesini küçültüyor
- cGirdi örnekleme hızı arttı, hedef daha sık yeni bir konuma geçiyor
- dRenderer yüksek yenilemeli monitörde her ikinci kareyi atlıyor, kamera güncellemeleri gecikiyor
Açıklama:Bu, farklı bir açıdan aynı kare-hızına-bağımlı lerp sorunudur: kare hızı yükseldiğinde aynı kare-başı oran gerçek saniyede daha çok kez bileşiyor, bu yüzden kamera hedefe gerçek zamanda daha hızlı yaklaşır ve bu daha ani hissettirir. (b), (c) ve (d) anlatılan kod yoluyla ilgisi olmayan mekanizmalar uyduruyor.
Gp Camera Follow TargetingZorluk 1
Bir takip kamerası, ekran merkezi etrafında hedefin hiçbir kamera hareketi tetiklemeden içinde gezinebildiği küçük dikdörtgen bir bölge tanımlıyor. Bu bölgeye genellikle ne denir?
- aKırpma bölgesi
- bÖlü bölge✓
- cCulling kutusu
- dÇapa çerçevesi
Açıklama:Ölü bölge, içindeki hedef hareketinin hiçbir kamera hareketi üretmediği tolerans alanıdır; kamera yalnızca hedef bu bölgenin kenarına ulaştığında hareket etmeye başlar. (a) ve (c) render/fizik ile ilgili kavramlardır ve kamera takibiyle alakasızdır, (d) bunun için standart bir terim değildir.
Gp Camera Follow TargetingZorluk 2
Bir kamera, oyuncunun ilerideki alanı daha çok görmesi için hedefin o anki hareket yönüne doğru ileri bir ofset ekliyor ("bakış ileri kaydırma / look-ahead"). Hedef sık sık yön değiştirirse (ör. ileri geri yürürse) hangi yaygın arıza görülür?
- aLook-ahead ofseti hedef hareket ettikçe sınırsız şekilde birikir
- bLook-ahead açıldığında hedef etrafındaki ölü bölge kalıcı olarak kaybolur
- cKameranın görüş açısı yön her değiştiğinde sabit bir miktar daralır
- dOfset taraf değiştirdikçe kamera tekrar tekrar ileri geri sıçrar✓
Açıklama:Look-ahead ofsetinin yönü doğrudan o anki hareket yönüne bağlı olduğu için her yön değişimi ofseti karşı tarafa çevirir; bu yumuşatılmaz ya da histerezis eklenmezse hızlı yön değişimleri kameranın gözle görülür şekilde sıçramasına ya da salınmasına neden olur. (a) yön-takipli bir ofsetin davranışı değildir, (b) ve (c) ilgisiz sistemlerdir.
Gp Camera Follow TargetingZorluk 1
Bir platform oyununda takip kamerası her karede hedefin Y konumunu, her küçük zıplamayı dahil ederek birebir kopyalıyor. Oyuncular normal zıplama sırasında kameranın titrek hissettiğinden şikayet ediyor. Yaygın çözüm nedir?
- aHam zıplama Y'si yerine yumuşatılmış bir zemin-referans yüksekliğini takip etmek✓
- bDikey kamera hareketini tamamen kapatıp yalnızca yatayda hareket etmek
- cHedefin zıplama yüksekliğini artırarak dikey hareketin daha net okunmasını sağlamak
- dDikey değişimlerin daha seyrek güncellenmesi için oyunun kare hızını düşürmek
Açıklama:Ayakta durma/zemin yüksekliğine bağlı yumuşatılmış bir referansı takip etmek (sık değişen ham zıplama konumu yerine), küçük zıplamalardan gelen kareler-arası dikey gürültüyü kaldırırken kameranın daha büyük ve kalıcı yükseklik değişimlerine hâlâ tepki vermesini sağlar. (b) dikey takibi tamamen kaldırır ve yüksek düşüş/tırmanışlarda çerçevelemeyi bozar; (c) ve (d) kök nedeni ele almaz.
Gp Camera Follow TargetingZorluk 2
float lookAheadOffset = movementDirection.x * lookAheadDistance;
cameraTargetX = target.x + lookAheadOffset;
lookAheadDistance büyük sabit bir değer,
movementDirection.x ise birim uzunluklu bir yön bileşeni. Bu parça, çerçeveleme açısından güvenli tipik bir implementasyona göre hangi kenar durumunu eksik bırakıyor?
- aHer çağrıda
lookAheadDistance'a çarpılan bir kare-hızı düzeltme çarpanı - bOfsetin yön değişiminde anında sıçramaması için kırpma ya da yumuşatma✓
- c
lookAheadOffset'i target.x'e eklemeden önce tam sayıya dönüştürme - dZ ekseni hareketi için ayarlanmış ayrı bir
lookAheadDistance değeri
Açıklama:Yazıldığı haliyle, movementDirection.x'teki her değişim (küçük yön tersine dönüşleri dahil) hiçbir yumuşatma olmadan anında tam ofseti üretir; bu tam olarak gözle görülür sıçramaya yol açan türden bir anlık atlamadır. (a) bu bir kare-başı integrasyon adımı olmadığı için ilgisizdir, (c) kenar durumuyla ilgisi olmayan bir tip meselesidir, (d) alakasız bir eksendir.