Rigidbody, physics layer'lar ve raycast nasıl çalışır? FixedUpdate neden önemlidir?
Cevap
Rigidbody, bir nesneyi fizik motorunun (PhysX) kontrolüne verir: yerçekimi, kuvvet, çarpışma tepkisi. Fizik sabit zaman adımında (varsayılan 0.02 sn) hesaplanır; bu yüzden fizik kodu FixedUpdate içinde yazılır.
Rigidbody rb;
Vector3 input;
void Awake() => rb = GetComponent<Rigidbody>();
void Update() => input = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical")); // input'u Update'te oku
void FixedUpdate() => rb.AddForce(input * 10f); // fiziği FixedUpdate'te uygula- Rigidbody'li nesneyi
transform.positionile taşımak fiziği bozar;rb.MovePositionveya kuvvet/hız kullanılır. - Kinematic Rigidbody fizikten etkilenmez ama diğer nesneleri iter (hareketli platform).
- Görsel titremeyi önlemek için Rigidbody'de Interpolate açılır.
Layer'lar ve collision matrix
Her GameObject bir layer'a sahiptir. Project Settings > Physics'teki Layer Collision Matrix ile hangi layer'ların birbiriyle çarpışacağı belirlenir (ör. oyuncu mermileri oyuncuya çarpmasın). Bu hem mantık hem performans kazancı sağlar.
Raycast
Bir noktadan belirli yönde ışın gönderip ilk çarptığı collider'ı bulur. Görüş hattı, ateş etme, yere değme kontrolü için kullanılır.
int mask = LayerMask.GetMask("Ground", "Enemy");
if (Physics.Raycast(transform.position, Vector3.down, out RaycastHit hit, 1.1f, mask))
{
isGrounded = true;
Debug.Log(hit.collider.name + " " + hit.distance);
}LayerMask bir bit maskesidir; raycast'i sadece ilgili layer'larla sınırlamak hem yanlış sonuçları hem maliyeti azaltır. Birden fazla sonuç için RaycastNonAlloc tercih edilir.
İlgili Unity & C# soruları
- Unity'de Update, FixedUpdate ve LateUpdate arasındaki fark nedir?
- GetComponent çağrılarını neden önbelleğe almalısınız?
- C# delegate, event ve UnityEvent arasındaki farklar nelerdir?
- Unity'de garbage collection neden frame düşüşüne yol açar? Update içinde allocation'dan nasıl kaçınırsınız?
- C#'ta struct ile class arasındaki fark nedir? Value type ve reference type oyunda neden önemlidir?
- Prefab nedir? Prefab variant ve nested prefab ne işe yarar?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.