Unity Fizik Motoru: 2D ve 3D Simülasyon Farkları
Unity iki ayrı fizik motoru barındırır: 2D simülasyonlar için Box2D, 3D için PhysX. İkisi de gerçekçi hareket sağlar ama çalışma mantığı farklıdır. Hangisini seçeceğin, oyunun boyutu ve performans ihtiyacına bağlı.
2D Fizik sadece X-Y düzleminde işler. Yerçekimi, çarpışma ve kuvvetler yatay-dikey eksenlerde hesaplanır. Daha hafif, mobil oyunlar için ideal. 3D Fizik ise X-Y-Z uzayında tam kontrol sağlar. Daha karmaşık hesaplamalar yapar, daha fazla işlemci gücü ister.
Önemli fark: 2D'de `Rigidbody2D`, 3D'de `Rigidbody` bileşeni kullanırsın. İkisini aynı nesneye ekleyemezsin, seçim yapman gerekir.
Bir GameObject oluştur, ona `SpriteRenderer` (görsel) ve `Rigidbody2D` ekle:
1using UnityEngine;23public class Ball2D: MonoBehaviour4{5void Start()6{7Rigidbody2D rb = GetComponent<Rigidbody2D>();8rb.velocity = new Vector2(5f, 0f); // Sağa doğru hareket9rb.gravityScale = 1f; // Yerçekimi etkisi10}11}Çıktı: Top sağa doğru hareket ederken aşağı düşer.
Aynı GameObject'e `MeshRenderer` ve `Rigidbody` ekle:
1using UnityEngine;23public class Ball3D: MonoBehaviour4{5void Start()6{7Rigidbody rb = GetComponent<Rigidbody>();8rb.velocity = new Vector3(5f, 0f, 0f); // X ekseni (sağa)9rb.useGravity = true; // Yerçekimi10}11}Çıktı: Top X ekseninde hareket ederken Y ekseninde düşer.
2D daha hızlıdır. Mobil oyunlarında 2D fizik tercih et. 3D sadece gerçekten 3D mekaniğe ihtiyacın varsa kullan, örneğin kamera etrafında dönen objeler, yükseklik farkları veya daha karmaşık çarpışmalar.
Sahne oluştururken Physics Settings'te gravity değerini kontrol et: 2D'de Y ekseni genelde -9.81, 3D'de de öyle. Başlangıçta bu varsayılanları koru, sonra ihtiyaca göre ayarla.
0 yorum