Çok güzel... :) Harita konusunu nasıl hallettin?
Ali
--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]
September 17, 2009 XNA ve Pacman Çalışmalarım | ||||
---|---|---|---|---|
| ||||
Posted in reply to erdem | Çok güzel... :) Harita konusunu nasıl hallettin? Ali -- |
September 18, 2009 XNA ve Pacman Çalışmalarım | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ali Çehreli (acehreli) | Harita yapmadım :) Bunun yerine duvarlar için dikdörtgenler oluşturdum. Bu dikdörtgenler, dikdörtgenin X ve Y koordinatı ile dikdörtgenin genişliğini ve yüksekliğini tutan yapılar:
gibi .. Daha sonra pacman aslında dairesel bir cisim ama karşılaştırmak için bir tane de pacmanin etrafında gecici bir dikdörtgensel cisim oluşturdum ve bu mantıkla çarpışma algılamasını yaptım. Tabi bu biraz yorucu oldu :) Çünkü bu dikdörtgenlerin koordinatlarını teker teker oluşturmak zorunda kaldım. Aslında bu tür (maze) oyunlarda bir harita sistemi ve bu haritaya dayanan bir çarpışma algılaması yapmak daha mantıklı sanırım. Ama mantığı tam anlamadığım için ve bu yöntem biraz zor geldiği için şimdilik üstteki yöntemle yaptım. Daha sonra bu konuyu da öğrenek pacman'i harita tabanlı hareket edecek, çarpışma algılamasını da bu sistem üzerinde kuracak şekilde değiştirmeyi düşünüyorum. Bir de şunu öğrendim. Aslında C#'da çok boyutlu dizi oluşturmak çok kolaymış. Örneğin iki boyutlu bir diziyi:
ya da üç boyutlu bir diziyi
şeklinde oluşturabiliyormuşuz. -- |
September 18, 2009 XNA ve Pacman Çalışmalarım | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ali Çehreli (acehreli) | Güzel bir fikir :) ! Böylelikle diğer bölümler için uğraşmaktan kurtulurum. Oyunu harita kullanacak şekilde yapmadım çünkü Pacman'in hareket şeklini değiştirmem gerekiyordu. Şimdiki haliyle direkt bir hareketEt() diye bir işlev var. Eğer ızgara tabanlı hareket yapsaydım ilkönce hareketEtmeyeCalis () ve hareketEt () diye iki tane işlev yazmam gerekecekti. Kısacası pacman'in hareket sistemini tamamen değiştirmem gerekecekti. Ama dediğiniz şekilde olunca hareket şeklini de değiştirmeden harita kullanmak mümkün oluyor. Denedikten sonra buraya tekrar yazarım.. -- |
September 18, 2009 XNA ve Pacman Çalışmalarım | ||||
---|---|---|---|---|
| ||||
Posted in reply to erdem | Dikdörtgenler işe yaradıysa kalabilirler de, bence onları da haritadan oluşturabilirsin. Haritanın içeriği dikdörtgenlere dönüştürülebilir; çünkü her bir noktası bir bloğu temsil edebilir. Sonra iç içe iki for döngüsü ile duvarlar'ı oluşturabilirsin. Ali -- |
September 19, 2009 XNA ve Pacman Çalışmalarım | ||||
---|---|---|---|---|
| ||||
Posted in reply to erdem | Pacman Çarpışma Algılaması (http://www.youtube.com/watch?v=Shpgi01Q_Pg) Burada Pacman'in noktaları ve diğer cisimleri yeme davranışını yaptım. Pacman'in etrafında gezen o kırmızı dikdörtgen çarpışma kutucuğu. İlk yapmaya çalıştığımda aynı anda birden fazla nokta yiyebiliyordu. Bunu çarpışma kutucuğunu yarıya indirerek ve konumunu tam merkezde olacak şekilde ayarlayarak düzelttim. Pacman sağa sola hareket etmek istediğinde o kutucuk da hareket yönüne göre bir tarafa kayıyor. Üst tarafta bulunan şey de hayalet protipi :) -- |
September 19, 2009 XNA ve Pacman Çalışmalarım | ||||
---|---|---|---|---|
| ||||
Posted in reply to Ali Çehreli (acehreli) | Evet bunu görsel olarak çarpışma kutucuğunu çizdirdiğimde buldum. Örneğin pacman şöyle bir durumdayken çarpışma kutucuğu tam olduğu zaman (dikkat ederseniz biraz yukarda) aynı anda sola gitmeye çalıştığı zaman noktaların ikisini de götürüyor. Çünkü o noktalar da aslında çarpışma kutucuğu boyunda transparan bir resim. http://img246.imageshack.us/img246/6450/ekranw.png -- |
September 19, 2009 XNA ve Pacman Çalışmalarım | ||||
---|---|---|---|---|
| ||||
Posted in reply to erdem | Güzel fikir... :) Kutucuğun tam yarı olup olmamasına oynadıkça karar veriyorsundur. Herhalde büyüklüğü oyunun doğallık hissini etkiliyordur. Ali -- |