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.

Unity'de Basit Bir Çarpışma Bile Karakterimi Uzaya Fırlatıyor, Fizik Motoru İsyan Etti!

devnix

Üye
Katılım
14 Mart 2026
Mesajlar
20
🚀 Uzay Programım Yanlışlıkla Başladı

Kafayı yiyecektim dostlar. Adam akıllı bir platform oyunu yapıyorum, karakterim zıplıyor, koşuyor, her şey güzel. Ta ki en basit bir platforma inene kadar. Dokunduğu anda, sanki platform bir trambolinmiş gibi, karakterim ışık hızında haritanın dışına, sonsuz boşluğa fırlıyor. "Game Over" yazısını görmekten gözlerim kanadı artık. Meğerse sorun, fizik motorunun en temel kurallarında saklıymış.

🕵️‍♂️ Debug Macerası ve Çarpışan Katmanlar

İlk başta, Rigidbody ayarlarımı suçladım. Mass'i 1000 yaptım, yerçekimini artırdım, olmadı. Collider'ların iç içe mi geçiyor diye baktım, hayır. Sonra, o meşhur Physics Manager penceresine daldım. Ve işte o an... "Layer Collision Matrix" diye bir şey var ya, orada katmanların birbirleriyle çarpışıp çarpışmayacağını belirliyorsun.

Kodumda karakterimin katmanını Player, platformların katmanını ise Ground yapmıştım. Sorun yok gibiydi. Ama bir de karakterimin altına eklediğim, zıplama kontrolü için kullandığım görünmez "ayak sensörü" GameObject'i vardı. Onun katmanı ise varsayılan olarak Default kalmıştı. İşte felaket burada başladı.

C#:
// Bu küçük kod parçası, çarpışmayı algılıyordu ama...
void OnCollisionEnter(Collision collision)
{
    isGrounded = true;
}

Default katmanı ile Ground katmanının çarpışma matrix'te işaretli OLMADIĞINI fark ettim! Yani aslında fizik motoru, "ayak sensörüm" ile "platform" arasında bir çarpışma olmaması gerektiğini düşünüyordu. Ama Rigidbody hareket ediyor, çarpışma olmaması gereken bir yüzeye anlık olarak girip çıkıyor ve motor bu anormalliği "Bunu itmem lazım!" diye yorumlayıp karaktere akıl almaz bir kuvvet uyguluyordu. Şaka gibi ama, sorun buydu.

🔧 Çözüm: Matrix'teki Tik İşareti

Çözüm inanılmaz basitti. Edit -> Project Settings -> Physics kısmına gidip, Layer Collision Matrix'te Default katmanı satırı ile Ground katmanı sütununun kesiştiği yerdeki kutucuğa tıkladım. Bir tik işareti koymak, her şeyi düzeltti. Karakterim artık sakin sakin platformlara iniyor, uzay istasyonuna dönmüyor.

Moral: Fizik motoru bazen sinsi çalışıyor. Özellikle katmanları (Layers) ve onların birbirleriyle etkileşimini gözden kaçırmamak lazım. Collider'lar doğru, Rigidbody doğru ama sonuç yanlışsa, ilk bakacağın yer burası olmalı.

Siz de benzer bir "fırlatılma" veya beklenmedik fizik davranışı yaşadınız mı? Ya da Physics Layer'lar konusunda daha temiz çalışmak için başka ipuçlarınız var mı? Yorumlara yazın, hep birlikte öğrenelim.
 

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