Şu anda aşağıdaki sorunla karşı karşıyayım:
Bir varlık bileşen sistemi (ECS) kullanarak bir pong klonu yazmaya çalışıyorum . "Çerçeveyi" tek başıma yazdım. Yani varlıkları tüm bileşenlerle yöneten bir sınıf var. Sonra bileşen sınıfları kendileri var. Son olarak, sistemin ihtiyaç duyduğu bileşenlere sahip tüm varlıkları elde eden sistemlerim var.
Örneğin, benim hareket sistemim bir pozisyon bileşeni ve bir hareket bileşeni olan tüm varlıkları arar. Konum bileşeni sadece konumu ve hareket bileşeni hızı tutar.
Ama asıl sorun çarpışma sistemim. Bu sınıf mantıklı bir damla gibidir. Bu sınıfta çok özel durumlarım var.
Örneğin: Küreklerim kenarlıklarla çarpışabilir. Bu durumda hızları sıfıra ayarlanır. Topum da sınırlarla çarpışabilir. Ancak bu durumda hızı sınırın normalinde yansıtılır, böylece yansıtılır. Bunu yapmak için topa ekstra bir fizik bileşeni verdim: "Hey, bu şey durmuyor, yansıtıyor." Aslında fizik bileşeninin gerçek bir verisi yoktur. Sisteme bir nesnenin yansıtıp yansıtmadığını veya durup durmadığını söylemek için boş bir sınıftır.
Sonra geliyor: Top kürekler veya sınırlarla çarpıştığında bazı parçacıklar oluşturmak istiyorum. Bu yüzden topun çarpışma sistemine çarpışmada parçacık yaratmasını söyleyen başka bir bileşen alması gerektiğini düşünüyorum.
Sonra kürekler ile çarpışabilir ancak sınırları ile değil güç ups istiyorum. Bu durumda, güçlendiriciler yok olmalıdır. Bu yüzden çok daha fazla vakaya ve bileşene ihtiyacım olacaktı (sisteme bazı varlıkların sadece diğerleriyle çarpışabileceğini söylemek için, bazıları gerçekten çarpışabiliyor olsa bile, herkesle çarpışmayacak, ayrıca çarpışma sistemi kürekler, vb.).
Varlık bileşen sisteminin iyi bir şey olduğunu görüyorum çünkü esnek ve kalıtımla ilgili sorunlarınız yok. Ama şu anda tamamen takılıp kaldım.
Çok karmaşık mı düşünüyorum? Bu sorunla nasıl başa çıkmalıyım?
Tabii, aslında "çarpışma sonrası" ndan sorumlu sistemler yaratmak zorundayım, bu yüzden çarpışma sistemi sadece "Evet, son karede bir çarpışma var" der ve sonra bir sürü "çarpışma sonrası" sistem vardır. hepsi farklı (kombinasyonları) bileşenler gerektirir ve daha sonra bileşenleri değiştirir. Örneğin, çarpışma anında durması gereken şeyleri durduran bir çarpışma sonrası hareket sistemi olurdu. Sonra bir şeyleri yansıtan bir çarpışma sonrası sistem.
Ama bu benim için de uygun bir çözüm gibi görünmüyor, çünkü:
- Hareket çarpışma sonrası sistemim, bir konum bileşeni, bir hareket bileşeni ve çarpışma bileşenine sahip varlıklara ihtiyaç duyacaktır. Ardından, varlığın hızını sıfıra ayarlayacaktır.
- Çarpışma sonrası fizik sisteminin bir pozisyon bileşeni, bir hareket bileşeni, bir çarpışma bileşeni ve bir fizik bileşeni olan varlıklara ihtiyacı olacaktır. Sonra hız vektörünü yansıtır.
Sorun açıktır: Çarpışma sonrası hareket, fizik çarpışma sonrası sistemdeki varlıkların bir alt kümesi olan varlıklara ihtiyaç duyar. Dolayısıyla çarpışma sonrası iki sistem aynı veriler üzerinde çalışacaktı, etki şu: Bir işletmenin fizik bileşeni olmasına rağmen, bir çarpışmadan sonra hız sıfır olacaktır.
Bu sorunlar genel olarak bir varlık bileşen sisteminde nasıl çözülür? Bu problemler normal mi yoksa yanlış bir şey mi yapıyorum? Evetse, bunun yerine ne ve nasıl yapılmalıdır?