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
Bir çarpışma nesnesi (collision object) birden çok gömülü şekil içerebilir. 3B fizikte bunlar glTF veya GLB dosyalarından gelen zarfları (hull) ve üçgen örgülerini (triangle mesh) içerebilir. Çarpışma nesnesinin Collision Shape özelliği aracılığıyla bir karo haritası (tilemap) veya dışbükey şekil (convex shape) kaynağı da kullanabilirsiniz.
Temel şekiller (primitive shapes) kutu, küre ve kapsül şekilleridir. Çarpışma nesnesine sağ tıklayıp Add Shape seçeneğini seçerek temel bir şekil ekleyebilirsiniz:

Bir kutunun konumu, dönmesi ve boyutları (genişlik, yükseklik ve derinlik) vardır:

Bir kürenin konumu, dönmesi ve çapı vardır:

Bir kapsülün konumu, dönmesi, çapı ve yüksekliği vardır:

Kapsül şekilleri yalnızca 3B fizik kullanılırken desteklenir (game.project dosyasının Physics bölümünde yapılandırılır).
Karmaşık şekiller karo haritası geometrisini veya dışbükey zarf (convex hull) verilerini kullanabilir. Defold 1.13.2 sürümünden itibaren 3B çarpışma nesneleri glTF veya GLB sahnelerindeki örgülerden zarf ve üçgen örgüsü şekilleri de oluşturabilir.
Bir örgünün dışbükey bir yaklaşımını oluşturmak için Hull şeklini; çarpışmaların, bölüm geometrisindeki açıklıklar gibi içbükey alanlar da dahil olmak üzere örgünün üçgenlerini izlemesi gerektiğinde ise Mesh şeklini kullanın.
3D olarak belirleyin.Seçilen örgü, kendi yerel geometrisini sağlar; glTF düğüm dönüşümleri uygulanmaz. Örgü çarpışma şekilleri, statik ve statik olmayan çarpışma nesneleri de dahil olmak üzere Bullet 3D arka ucu tarafından desteklenir. 2B fizik arka uçları tarafından desteklenmezler.
Üçgen örgüsü geometrisi, çalışma zamanı şekil API’leri üzerinden yalnızca okunabilir. Üçgenlerini değiştirmek için kaynak örgüyü düzenleyin ve projeyi yeniden derleyin. Oyun nesnesinin ölçeği için çarpışma şekillerini ölçekleme bölümüne bakın.
Defold, bir karo haritasının kullandığı karo kaynağı (tile source) için kolayca fizik şekilleri oluşturmanızı sağlayan bir özellik içerir. Karo kaynağı kılavuzu, bir karo kaynağına çarpışma gruplarının nasıl ekleneceğini ve karoların çarpışma gruplarına nasıl atanacağını açıklar (örnek).
Bir karo haritasına çarpışma eklemek için:

Çarpışma grupları karo haritasının karo kaynağında tanımlandığı için burada Group özelliğinin kullanılmadığını unutmayın.
3B fizikte yukarıdaki düzenleyici iş akışını kullanarak doğrudan bir örgüden zarf oluşturabilirsiniz. Eski .convexshape kaynağı da desteklenir ve harici bir düzenleyici kullanılarak noktalardan oluşturulabilir:
.convexshape dosya uzantısıyla) oluşturun.Dışbükey zarf dosya biçimi, diğer tüm Defold dosyalarıyla aynı veri biçimini, yani protobuf metin biçimini kullanır. Bir dışbükey zarf şekli, zarfın noktalarını tanımlar. 2B fizikte noktaların saat yönünün tersine sıralanarak verilmesi önerilir. 3B fizik modunda soyut bir nokta bulutu kullanılır. 2B örneği:
shape_type: TYPE_HULL
data: 200.000
data: 100.000
data: 0.0
data: 400.000
data: 100.000
data: 0.0
data: 400.000
data: 300.000
data: 0.0
data: 200.000
data: 300.000
data: 0.0
Yukarıdaki örnek bir dikdörtgenin dört köşesini tanımlar:
200x300 400x300
4---------3
| |
| |
| |
| |
1---------2
200x100 400x100
Çarpışma şekilleri oluşturmak için kullanılabilecek çeşitli harici araçlar vardır:
Çarpışma nesnesi ve şekilleri, oyun nesnesinin ölçeğini devralır. Bu davranışı devre dışı bırakmak için game.project dosyasının Physics bölümündeki Allow Dynamic Transforms onay kutusunun işaretini kaldırın. Yalnızca tüm eksenlerde aynı oranda ölçeklemenin desteklendiğini ve ölçek tüm eksenlerde aynı değilse en küçük ölçek değerinin kullanılacağını unutmayın.
Temel şekiller, çalışma sırasında physics.set_shape() kullanılarak yeniden boyutlandırılabilir. Bu işlev, zarfın köşelerini veya üçgen örgüsü geometrisini değiştirmez. Örnek:
-- set capsule shape data
local capsule_data = {
type = physics.SHAPE_TYPE_CAPSULE,
diameter = 10,
height = 20,
}
physics.set_shape("#collisionobject", "my_capsule_shape", capsule_data)
-- set sphere shape data
local sphere_data = {
type = physics.SHAPE_TYPE_SPHERE,
diameter = 10,
}
physics.set_shape("#collisionobject", "my_sphere_shape", sphere_data)
-- set box shape data
local box_data = {
type = physics.SHAPE_TYPE_BOX,
dimensions = vmath.vector3(10, 10, 5),
}
physics.set_shape("#collisionobject", "my_box_shape", box_data)
Belirtilen kimliğe sahip ve doğru türde bir şekil, çarpışma nesnesinde zaten bulunmalıdır.
3B fizikte çarpışma şekilleri tüm eksenler etrafında döndürülebilir.
2B fizikte çarpışma şekilleri yalnızca z ekseni etrafında döndürülebilir. x veya y ekseni etrafında döndürme yanlış sonuçlar verir ve bundan kaçınmanız önerilir; buna, şekli x veya y ekseni boyunca ters çevirmek için 180 derece döndürme de dahildir. Bir fizik şeklini ters çevirmek için physics.set_hlip(url, flip) ve physics.set_vlip(url, flip) kullanılması önerilir.
Çalışma sırasında çarpışma şekillerini görmek için fizik hata ayıklamasını etkinleştirebilirsiniz.