Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Godot 4'teki Fizik Layer'ları, 3.5'in Karmaşasından Kurtardı Ama Öğrenmesi Zaman Aldı!

asteron

Üye
Katılım
14 Mart 2026
Mesajlar
41
🎮 Godot 4'e Geçiş ve İlk Şok

Uzun süredir Godot 3.5'te takılıyordum, projelerimde collision_layer ve collision_mask ile boğuşmaktan kafayı yemiştim. "Bu nesne şunla çarpışsın, bunla çarpışmasın" derken bit mask hesapları yapıyor gibi hissediyordum. Godot 4'ün yeni fizik layer sistemi geldi diye sevindim, "sonunda" dedim. Meğerse yeni bir dil öğrenmek gibiymiş, ilk başta tamamen afalladım.

🤯 3.5'teki Karmaşa Neydi?

3.5'te her şey sayılardaydı. Layer'lar 1, 2, 4, 8, 16... diye giden bit değerleriydi. Mask için hangi layer'larla etkileşime girecekse onların toplamını yazıyordun. Küçük bir projede idare eder ama layer sayısı artınca, "Acaba 32 miydi yoksa 64 mü?" diye sürekli geri dönüp kontrol etmek zorunda kalıyordun. Bir de bunu birden fazla nesne için yapınca, kodun içi şöyle karışık ifadelerle doluyordu:

Kod:
collision_layer = 1
collision_mask = 1 | 4 | 16 # 1, 3. ve 5. layer'lar

Görsel bir fikrim yoktu, sadece sayılar vardı. PhysicsBody'leri ayarlarken defalarca hata yaptım.

🆕 Godot 4'teki Kurtarıcı (Ama Zaman İsteyen) Sistem

Godot 4'te Project Settings -> Layer Names -> Physics 3D/2D kısmına gidip layer'larıma isim verebiliyorum! Artık "player", "enemy", "ground", "bullet" gibi. İnanılmaz derecede okunaklı.

Ancak, alışkanlık güçlü bir şey. İlk başta mask mantığının da değiştiğini anlamadım. 3.5'te mask, "ben kiminle çarpışayım"dı. 4'te ise her layer için iki sütun var: Layer ve Mask. "Layer" bu nesnenin ait olduğu kategori, "Mask" ise bu nesnenin hangi kategorideki nesneleri algılayacağı. Yani artık her şey görsel ve isim bazlı. Ama arayüzdeki onlarca checkbox'a ilk bakışta "Bu neyin nesi?" dedirtiyor.

💡 Öğrendiğim Püf Noktası

En büyük "Aha!" anım şuydu: Bir Area2D'nin sadece "enemy"leri algılamasını istiyorsam, onun Layer kısmını boş bırakabilirim (yani hiçbir fiziksel katmanda olmasın). Sadece Mask kısmından "enemy"yi işaretliyorum. Bu, 3.5'teki eski mantıkla düşünürken kafamı karıştıran en önemli noktaydı. Yeni sistem aslında çok daha esnek ve güçlü.

✅ Sonuç ve İsyan

Sonuç olarak, Godot 4'ün fizik layer sistemi kesinlikle bir nimet. Kod okunabilirliği ve proje yönetimi inanılmaz derecede arttı. Ancak, eski alışkanlıkları kırmak ve yeni arayüzdeki mantığı tam kavramak bir iki küçük projeyi berbat etmemi gerektirdi. Şaka gibi ama, KinematicBody'nin yerini alan CharacterBody2D ile bu layer'ları birlikte kullanmayı öğrenmek ayrı bir maceraydı!

Siz de Godot 3.5'ten 4'e geçerken böyle "eski sistem daha iyiydi" deyip sonra "aa aslında yeni sistem harikaymış" dediğiniz anlar yaşadınız mı? Özellikle fizik çarpışmalarında başka hangi püf noktaları keşfettiniz?
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri