Я использую композитный дизайн в моей текущей игре, который работает довольно хорошо.Все игровые объекты являются экземплярами GameObject или являются его прямыми потомками ... некоторые объекты реализуют определенный интерфейс, такой как оружие, так что они могут «использоваться» другими объектами или просто всякий раз, когда им нужны дополнительные общие данные / методы.Тем не менее, я начинаю интегрировать box2d в игру в данный момент, но у меня возникла проблема с композицией в этом случае.Например, спрайт визуализируется в компоненте рендеринга спрайта, а свойства объектов, такие как материал, применяются во время рендеринга, но в таких случаях, как метательные снаряды,
Я считаю, что мне нужно по сути кодировать одни и те же вещидважды: базовый снаряд имеет метод «onFire», «onExpire» и т. д., потому что оружие всегда владеет снарядами и поэтому вызывает эти методы напрямую.Однако попытка синхронизировать эти данные с компонентом физики снаряда кажется мне пустой тратой времени.Я думаю, что в этом случае мне, возможно, следует сделать так, чтобы сами снаряды «владели» физическим телом, где как физический компонент снаряда будет обрабатывать события onCollision и обновлять позиции. Это мне кажется более чистым.Теперь я, конечно, понимаю, что при этом я явно связываю объект снаряда с box2d, но для моих нужд это было бы хорошо.
Мне просто очень хотелось бы внести свой вклад в это дело, потому что на данный момент у меня много проблем, когда я пытаюсь сделать тот же составной дизайн, который используют другие объекты, чтобы соответствовать моим потребностям с помощью снарядов.Обратите внимание, что я не беспокоюсь о том, чтобы быть составным чистым, моя цель - создать игру, а не 2D-эквивалент движка исходного кода;)