Küçük bir 2D oyun motoru geliştiriyorum. Karakterler şu anda aşağıdakileri yapan bir boya yöntemine sahiptir:
- Karakterin hızını vb. Göre yeni konumunu hesaplayın.
- Çarpışma ızgara hücresini güncelleyin **
- Karakteri yeni konuma çizin
** Kavşak kontrolü sayısını azaltmak için bir çarpışma ızgarası oluşturdum
Şimdi çarpışmayı tespit etmek için düşündüğüm temel algoritma:
For Each Character
Check intersection with characters in surrounding 8 cells
Bu kodu sadece boya yöntemine yerleştirebilirim. Ama beklediğim problem burada.
Çarpışma ızgarasındaki bitişik hücrelerde iki A ve B karakteri bulunduğunu varsayalım. Şimdi yukarıdaki A karakterinin yinelemesindeki algoritmaya göre B ile çarpıştığını tespit edecektir. B karakterinin yinelemesinde A ile çarpıştığını tespit edecektir.
Ancak A'nın B ile çarpıştığını tespit ettiğinde, B'yi A ile çarpıştığını bildirmesi gerektiği fikrine sahibim. 2'den fazla aktör çarpıştığında bu çok fazla karşılaştırma yapacaktır. Ama bununla nasıl başa çıkacağımdan emin değilim. Bence her karakter çarpışmasını kontrol etmek yerine, oyun döngüsü içindeki çarpışmayı kontrol etmeliyim.
Bu yaklaşım doğru olur mu? Bu tür bir problemi nasıl ele aldınız? Çarpışma ızgarasını kendim düşündüm. Çarpışma ızgarası mantığına alternatif var mı?