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;
2
3public class Ball2D: MonoBehaviour
4{
5void Start()
6{
7Rigidbody2D rb = GetComponent<Rigidbody2D>();
8rb.velocity = new Vector2(5f, 0f); // Sağa doğru hareket
9rb.gravityScale = 1f; // Yerçekimi etkisi
10}
11}

Çıktı: Top sağa doğru hareket ederken aşağı düşer.

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası

Aynı GameObject'e `MeshRenderer` ve `Rigidbody` ekle:

1using UnityEngine;
2
3public class Ball3D: MonoBehaviour
4{
5void Start()
6{
7Rigidbody rb = GetComponent<Rigidbody>();
8rb.velocity = new Vector3(5f, 0f, 0f); // X ekseni (sağa)
9rb.useGravity = true; // Yerçekimi
10}
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.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz