Collision Layers Kurulumu: Gereksiz Fizik Hesaplamalarını Engelleme
Oyunda her nesne diğer tüm nesnelerle çarpışma kontrolü yapıyorsa, sahne karmaşıklaştıkça performans hızla düşer. Collision layer'ları kullanarak sadece gerekli çarpışmaları hesaplatırsın.
Örneğin, düşman NPC'leri birbirlerine çarpmasın ama oyuncu onlara çarpabilsin. Veya UI elemanları hiçbir fizik nesnesiyle etkileşmemelidir. Layer sistemini doğru kurmak, gereksiz hesaplamayı yüzde 70'e kadar azaltabilir.
Temel Ayarlama
Unity'de Physics Settings'e gir. Collision Matrix'i açarsın. Burada her layer'ın diğer layer'larla çarpışıp çarpışmayacağını tanımlarsın.
Önce layer'ları oluştur:
- Player
- Enemy
- Environment
- Trigger (tetikleyici alanlar)
- UI
Pratik Örnek
Bir oyunda üç nesne var: oyuncu, düşman ve dekoratif ağaç. Oyuncu düşmanla çarpışmalı, ağaçla da; ama düşmanlar kendi aralarında çarpışmasın.
Kod olarak şu şekilde ayarlarsın:
1// Enemy scriptinde2using UnityEngine;34public class Enemy: MonoBehaviour5{6void Start()7{8gameObject.layer = LayerMask.NameToLayer("Enemy");9}10}1112// Player scriptinde13public class Player: MonoBehaviour14{15void Start()16{17gameObject.layer = LayerMask.NameToLayer("Player");18}1920void OnTriggerEnter(Collider other)21{22if (other.CompareTag("Enemy"))23{24Debug.Log("Düşmanla çarpıştı!");25}26}27}Physics Settings'te Collision Matrix'i ayarla:
- Player Enemy: (çarpışsın)
- Player Environment: (çarpışsın)
- Enemy Enemy: (çarpışmasın)
- Enemy Environment: (çarpışsın)
- UI hepsi: (hiçbir şeyle çarpışmasın)
Bu ayarlamadan sonra motor Enemy-Enemy çarpışmalarını hesaplamaz. Sahne büyüdükçe bu tasarruf çok belirgin olur.
bknz: Collision Detection Hatasını Ayıklama: Physics Debugger Kullanımı
2 yorum
aynen abi ilk kez kurdum ben de kafam karıştı biraz ama sonra anlattığın gibi yapınca oyun fpsi çok fark ettim düşmanlar birbirleriyle kontrol etmeyi kapatınca çok rahatladı bir de ben layerları şuraya not ettim diye paylaşayım
benim oyunumda bu sayede düşman sayısını 30dan 50ye çıkardım aynı fpste kalarak hiçbir lag yok şimdi
collision matrixi ayarlamak biraz kafa karıştırıcı başta ama bir kez doğru yaptıktan sonra oyun çok daha akıcı çalışıyor gerçekten