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 ::






Bu yazının bulunduğu site: OyunYapimi.org
http://www.oyunyapimi.org

Bu yazı için adres:
http://www.oyunyapimi.org/modules.php?name=Sections&op=viewarticle&artid=5