This translation is community contributed and may not be up to date. We only maintain the English version of the documentation. Read this manual in English
Defold, iki boyutlu (2B) fizik simülasyonları için Box2D, üç boyutlu (3B) fizik için ise Bullet içerir. App Manifest içindeki Physics 2D ayarı, Box2D Version 3, Box2D (Legacy Defold version) veya None seçeneğini belirler. Eski uygulama varsayılandır; Box2D 3’ü kullanmak için ayrıca seçmeniz gerekir. Uygulamayı değiştirmek simülasyon sonuçlarını değiştirebilir ve sürüme özgü Box2D proje ayarlarını yeniden düzenlemenizi gerektirebilir.
Bu kılavuzlarda açıklanan bileşen (component) odaklı çarpışma nesnesi (collision object) iş akışı ve physics modülü, her iki Box2D uygulamasıyla da çalışır; None seçeneğini seçmek 2B fiziği kaldırır. Defold ayrıca 2B cisimlere, şekillere, eklemlere, zincirlere ve dünyalara doğrudan erişim için daha düşük düzeyli b2d, b2d.body, b2d.fixture, b2d.shape, b2d.joint, b2d.chain ve b2d.world API’lerini sunar. Her düşük düzeyli işlev, her iki Box2D uygulamasında da mevcut değildir; her işlevin oluşturulan API belgelerini App Manifest içinde seçilen uygulamaya göre kontrol edin.
Defold’da kullanılan fizik motorlarının temel kavramları şunlardır:
Çarpışma nesnelerinin yanı sıra, daha yaygın olarak eklem (joint) adıyla bilinen çarpışma nesnesi kısıtları (constraints) da tanımlayabilirsiniz. Bunlar iki çarpışma nesnesini birbirine bağlamanızı ve nesneleri sınırlayarak veya başka şekillerde kuvvet uygulayarak fizik simülasyonundaki davranışlarını etkilemenizi sağlar. Eklemler hakkında daha fazla bilgi edinin.
Ayrıca ışın sorgusu (ray cast) olarak bilinen işlemle fizik dünyasını doğrusal bir ışın boyunca sorgulayabilir ve okuyabilirsiniz. Işın sorguları hakkında daha fazla bilgi edinin.
Fizik motoru Newton fiziğini simüle eder ve metre, kilogram ve saniye (MKS) birimleriyle iyi çalışacak şekilde tasarlanmıştır. Ayrıca fizik motoru, boyutu 0,1 ile 10 metre arasında olan hareketli nesnelerle iyi çalışacak şekilde ayarlanmıştır (statik nesneler daha büyük olabilir) ve varsayılan olarak 1 birimi (pikseli) 1 metre olarak kabul eder. Piksel ile metre arasındaki bu dönüşüm, simülasyon düzeyinde kullanışlıdır, ancak oyun oluşturma açısından pek yararlı değildir. Varsayılan ayarlarla, 200 piksel boyutundaki bir çarpışma şekli 200 metre boyutunda kabul edilir. Bu değer, en azından hareketli bir nesne için, önerilen aralığın oldukça dışındadır.
Genel olarak fizik simülasyonunun, bir oyundaki nesnelerin tipik boyutlarıyla iyi çalışabilmesi için ölçeklendirilmesi gerekir. Fizik simülasyonunun ölçeği, game.project dosyasındaki fizik ölçeği ayarı aracılığıyla değiştirilebilir. Örneğin bu değeri 0.02 olarak ayarlamak, 200 pikselin 4 metre olarak kabul edilmesi anlamına gelir. Ölçekteki değişikliğe uyum sağlamak için yerçekiminin de (yine game.project dosyasında değiştirilir) artırılması gerektiğini unutmayın.
Kararlı bir simülasyon sağlamak için fizik motorunu, kare hızına bağlı ve düzensiz olabilecek aralıklarla güncellemek yerine düzenli aralıklarla güncellemeniz önerilir. game.project dosyasının Physics bölümündeki Use Fixed Timestep ayarını işaretleyerek fizik için sabit aralıklı güncelleme kullanabilirsiniz. Güncelleme sıklığı, game.project dosyasının Engine bölümündeki Fixed Update Frequency ayarı ile denetlenir. Fizik için sabit zaman adımı kullanırken, oyununuzdaki çarpışma nesneleriyle etkileşim kurmak, örneğin onlara kuvvet uygulamak için fixed_update(self, dt) yaşam döngüsü işlevini kullanmanız da önerilir.