Torque Game | 2. Aşama Kamera Sistemi

Yapımına devam ettiğim Torque (Tork) isimli bilgisayar oyunun 2. yapım aşamasında, oyun içerisinde kamera seçimini, aktif kameranın rotasyonunu değiştirmeyi ve kamera rotasyonuna göre karakterin hareket doğrultularının güncellenmesini tamamladım.


İndir “UPBGE Torque Game | Step_2” 2-Kamera_Rotasyon_ve_Değişim.rar – 13 defa indirildi – 19 MB


LICENSE TERMS / LİSANS KOŞULLARI


Hami Cihat SERTCAN isimli yazarın UPBGE Torque Game başlıklı eseri bu Creative Commons Atıf 4.0 Uluslararası Lisansı ile lisanslanmıştır.
https://hamisertcan.com/2020/06/10/torque-game-2-asama-kamera-sistemi/ bağlantısındaki esere dayalı olarak.


Önceki yazımın son kısmında kamera rotasyonu için animasyon yapılabileceğini yazmıştım. Ancak ben animasyon yerine kod yazmayı tercih ettim. Kod yazmamın bazı avantajları var elbette. Şimdi konu hakkında biraz bilgi vereyim.

Blender da objelerin rotasyon bilgisi

Blender oyun motoru objelerin rotasyon bilgilerini derece cinsinden değil de radyan cinsinden saklar. Ben de daha anlaşılır işlem yapabilmek için öncelikle rotasyon bilgilerini dereceye çevirdim. Ancak burada da şöyle bir sorun var ki rotasyon bilgisini 180 dereceye kadar arttırdıktan sonra -180 dereceye dönüşüyor ve sonrasında -180 den 0 da doğru devam ediyor.

Yazdığım kodun mantığı

Aslında basit bir işlem gibi görünse de kameranın rotasyonunu oyun içerisinde değiştirmek göründüğü kadar basit değil. Çünkü iş kamera rotasyonunu değiştirmekle bitmiyor. Kamera rotasyonuna göre objenin hareket doğrultularının da değişmesi gerekiyor. Eğer bu değişimi gerçekleştirebilecek bir kod yazılmamış ise örneğin kamera 0 derecede iken ileri yön tuşuyla ileri giderken, kamera 90 derece olduğunda ileri yön okuyla sağa doğru gidersiniz. Aslında siz her durumda global eksende ileri gidersiniz ancak kamera açısı yön algınızı bu şekilde şekillendirir. Bu noktada normalde objelerin lokal eksen bilgilerinden faydalanılır ancak bizim oyunumuzda karakterimizin ilerlemesi x ve y eksenlerindeki rotasyon hareketinden kaynaklanıyor. Bu durumdan dolayı lokal eksen bilgisi karakter hareketinin doğrultusu için kullanılamaz. Bu sorunu çözmek için kendi lokal ekseninizi tanımlamanız gerekir. Bende tam olarak böyle yaptım.

Kamera rotasyonuna gelince önceki denemelerimde oyun üç boyutlu olduğu için hamle yapma noktasında bazı durumlarda farklı açılardan sahneyi görmenin gerekli olduğu sonucunu çıkarmıştım. Temel olarak 90 derecelik hareketler olmasını ancak ara değerleri de görmenin mümkün olmasını amaçladım. Ara rotasyon değerlerinde sahneyi görmek sürekli kullanılacak bir özellik olmayacağı için bu işlemi spacebar tuşu ile diğer kamera rotasyon tuşlarının kombine kullanımı ile gerçekleştirdim.

Kamera rotasyonu hakkında yaptığım yazılım sayesinde kamera rotasyonunu, mevcut kamera rotasyonundan bağımsız olarak, herhangi bir rotasyon değerinde iken, a ve d tuşları ile ilgili yönde 90 derecenin katı bir açı değerine ulaştırabiliyoruz.

Sahneyi daha uzaktan görmek için, tab tuşu ile sahneyi farklı bir açıdan gören başka bir kamerayı aktif kamera olarak ayarlayabiliyoruz.

Sonraki aşamanın konusu

İlk yazımda oyunda, farklı özelliklerdeki karakterler arasında geçiş yapabileceğimizi yazmıştım. Üçüncü aşamada bu karakter geçişlerini yapmayı planlıyorum. Konu hakkında önceden birkaç deneme yaptım. Karakter geçişi esnasında bir efekt olmasını planlıyorum. Bu efekt için yaptığım deneme işin olurluğunu ispatlamış olsa da performans açısından bir sorun doğurup doğurmadığına da bakmak ve diğer bir takım testleri de yapmak gerekiyor.

Bir cevap yazın