Hoşgeldiniz: OyunYapimi.org
 
Ara
Konular
  Üye Olun!    
Ana Menü
 Ana Sayfa
 Anketler
 Dosyalar
 Dökümanlar
 Forum
 Haber Arşivi
 WWW Linkleri
 Üye Listesi

Forumlar
Forumlarda Arama
 
[ Ara ]
Son yazilanlar

free ebooks - 2004-05-16 14:47 free ebooks...
oyun yazmak için - 2004-05-15 11:13 oyun yazmak için...
Sinus dalgası - 2004-05-14 19:21 Sinus dalgası...
Demosu yakında... - 2004-05-06 15:11 Demosu yakında......
Depth Test - 2004-05-03 20:55 Depth Test...
forum mesajlarini duzenlemek - 2004-05-03 19:34 forum mesajlarini ...
Başka Programlara Erişmek - 2004-05-03 17:44 Başka Programlara ...
Güzel bir e-book bağlantısı.. - 2004-05-03 16:06 Güzel bir e-book b...
Okyanus Dalgasi - 2004-05-03 16:00 Okyanus Dalgasi...
3d Shoot em up - 2004-05-03 15:57 3d Shoot em up...
Esnek Güç - 2004-05-03 13:32 Esnek Güç...
UltimateGameProgramming.com - 2004-05-03 12:29 UltimateGameProgra...
Function Pointer Nedir ne ise yarar - 2004-05-03 01:35 Function Pointer N...


Konu Disi


LAMER - 2004-05-10 01:58 LAMER...
anasafa yok forum var - 2004-05-08 16:01 anasafa yok forum ...
Anasayfa Kapali  Fakat.. - 2004-05-06 15:05 Anasayfa Kapali F...
Texture Arşivi - 2004-05-03 01:39 Texture Arşivi...
Yeni Kitap: Elektronik Hobi - 2004-05-03 00:29 Yeni Kitap: Elektr...
3DTURK - 2004-05-02 23:27 3DTURK...
Online Oyun - 2004-05-02 19:27 Online Oyun...


Splatt Forum

Oyun Yapımı - 4 (Oyuncu Sınıfı ve Basit Çarpışma Kontrolleri))

(319 kelime)
(644 okuma)   Yazdırılabilir Sayfa




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


  

[ Geri Dön: Oyun Yapımı (Genel) | Dökümanlar İndeksi ]





Web site Engine's code is Copyright © 2002 by PHP-Nuke. All Rights Reserved. PHP-Nuke is Free Software released under the GNU/GPL license.