Serbest Kamera Sınıfı

Serbest kamera sabit nesnelerden oluşan bir sahnede gezinmek için ideal bir kameradır. Ayrıca serbest kamera ile “First Person Shooter” oyunlarındaki gibi W,A,S,D tuşları ile yönlendirme yaparak, fare ile kameranın açısını ayarlayarak, oyuncunun gözünden oynama seçeneği de yapabiliriz.

Serbest Kamera sınıfını için daha önceki yazıda hazırladığımız temel kamera sınıfından miras alarak oluşturacağız.

Serbest kamera sınıfı Hedef kamerası sınıfından farklı olarak rotadan sapma açısı (yaw) ve eğim (pitch) değerlerine sahiptir. Bu iki değer radyan olarak sırasıyla Y ve X eksenleri etrafında dönmeye karşılık gelir.

kamera_yaw_pitchcamera_yaw_pitch

Kameranın dönmesini sağlamak ve ilerlemesini sağlamak için ise Rotate() ve Move() methodları yazarak, klavyeden veya fareden gelen girişlere kameranın tepki vermesini sağlayabiliriz.

Değişen kamera parametrelerine göre görünüm matrisini güncelleme işlemlerini ise Update() methodunun üzerine yazarak yapacağız.

Bu methodları da sınıf içine yerleştirdiğimizde kameramız kullanıma hazır hale gelmiş oluyor. Bu kamerayı yazdığımız oyun içinde kullanmak istersek aşağıdaki kodları eklememiz gerekecek. Öncelikle global’de kamera ve fare durumlarını kaydetmek için gerekli değişkenleri oluşturalım.

Daha sonra tanımlamış olduğumuz kamerayı LoadContent() içerisinde serbest kamera ile değiştirelim.

Son olarak ise Update() methodu içinde kameranın klavye ve fare girişlerine güncellenmesi işlemlerini yapalım.

Burada kullanılan updateCamera() methodu ise şu şekildedir. Bu kodu Game1 class’ı içinde kalacak şekilde en sona yerleştirebiliriz.

Game1.cs dosyasında yazılı Game1 sınıfının son durumunu incelemek isterseniz aşağıdaki koda bakabilirsiniz.