Oyun Yapımı - 4 (Oyuncu Sınıfı ve Basit Çarpışma Kontrolleri))
4. Oyuncu Sınıfı ve Basit Çarpışma Kontrolleri:
Oyun yapımı döküman serisinin bu bölümünde bir oyuncu
sınıfı yaratmayı ve basit biçimde oyuncu - oyuncu arasi ve oyuncu
- oyun alanı arasındaki çarpışma kontrollerini yapmayı öğreneceğiz.
Oyuncu sınıfımızın ismi "Player" olacak. Player.h içerisindeki tanımları
incelediğinizde göreceğiniz gibi bu sınıf oyunumuz için ön
gördüğümüz hareket yönü, hız, sürtünme
kuvveti, puan gibi oyuncu özelliklerini içermekte. Aynı zamanda
bir ball nesnesi aracılığı ile oyuncunun görünümü nesne
içerisinde kullanılmak üzere saklanmakta.
Player sınıfının bizim için en önemli yordamları updatePosition()
ve hitToPlayer() yordamlarıdır. updatePosition() yordamı içerisinde
o anki tuşa basılma durumlarına ve geçen zamana göre, yeni bir
yön vektörü belirleniyor ve hız artışı sağlanarak oyuncu pozisyonu
değiştiriliyor. Aynı şekilde eğer hiç bir tuşa basma durumu yok ise
sürtünme kuvveti sabiti dikkate alınarak hız yavaşlatılıyor. Dışarıdan
aldığımız dt değişkeni zamanlamayı gerçekleştirmemize ve böylelikle
frame rate den bağımsız olarak çalışmaya olanak sağlıyor. hitToPlayer()
yordamı ile oyuncu - oyuncu arasında oluşabilecek çarpışma durumu
kontrol ediliyor. Bu bölümde uygulanması en kolay ve hızlı yöntem
olan "bounding sphere" kullanılıyor. Teorik olarak oyuncuları meydana getiren
küreler arasındaki uzaklık hesaplanıyor, eğer oyuncular birbirlerine
yarıçaplarından daha yakın iseler çarpışma oluşmuş oluyor.
Arena sınıfına ise isOutside() isimli bir yordam eklendi. Bu yordam ile bir
oyuncunun oyun alanı dışına çıkıp çıkmadığı test edilebiliyor.
Test işleminde yine basitçe merkeze olan uzaklık hesaplanması ile
sonuca gidiliyor. Oyun alanımız da çembere benzer bir yüzey olduğu
için bu yöntem kolaylıkla kullanılabiliyor.
Programın ana yönetim kısmı olan main.cpp kütüğünde de
özellikle yeni nesne işlevselliklerini kullanan bazı değişiklikler yaptık.
Özellikle renderScene() yordamında bu değişiklikler göze çarpıyor.
Oyuncu - oyuncu çarpışma kontrollerine göre oyuncu yönünü
değiştirme ile ilgili işlemlerin yanı sıra, oyuncunun oyun alanı sınırları
dışına çıkıp çıkmadığı kontrolü ve oyun alanını döndürme
işlemi de bu yordama eklenmiş bulunuyor. Geçen örnekten farklı
olarak bu sefer 2 oyuncumuz olduğu için tuşa basılma durumlarınıda
her oyuncu için farklı değişkenlerde tutmayı da unutmadık.
Bu açıklamalar ile birlikte sitemizin "dosyalar/döküman
ek" bölümünde yer alan oyun yapimi 4 proje dosyalarini indirip
kodlari incelediğinizde birçok açıklama satırı ile karşılaşacaksınız.
Bu açıklama satırları ile kodu incelediğiniz zaman herşeyi çok
daha iyi anlayacağınızı düşünüyorum. Anlamadığınız herhangi
birşey yada karşılaştığınız bir problem olursa bunu direk olarak forumlarımızda
dile getirebilirsiniz. İyi çalışmalar.
M.Deniz Aydınoğlu :: 2002 ::
|
|