Состав и снаряды - PullRequest
       5

Состав и снаряды

3 голосов
/ 17 сентября 2011

Я использую композитный дизайн в моей текущей игре, который работает довольно хорошо.Все игровые объекты являются экземплярами GameObject или являются его прямыми потомками ... некоторые объекты реализуют определенный интерфейс, такой как оружие, так что они могут «использоваться» другими объектами или просто всякий раз, когда им нужны дополнительные общие данные / методы.Тем не менее, я начинаю интегрировать box2d в игру в данный момент, но у меня возникла проблема с композицией в этом случае.Например, спрайт визуализируется в компоненте рендеринга спрайта, а свойства объектов, такие как материал, применяются во время рендеринга, но в таких случаях, как метательные снаряды,

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

Мне просто очень хотелось бы внести свой вклад в это дело, потому что на данный момент у меня много проблем, когда я пытаюсь сделать тот же составной дизайн, который используют другие объекты, чтобы соответствовать моим потребностям с помощью снарядов.Обратите внимание, что я не беспокоюсь о том, чтобы быть составным чистым, моя цель - создать игру, а не 2D-эквивалент движка исходного кода;)

1 Ответ

0 голосов
/ 30 ноября 2011

Например, спрайт визуализируется в компоненте рендеринга спрайта, а свойства объектов, такие как материал, применяются во время рендеринга, но в таких случаях, как метательные снаряды,

Нетипично для 2d. В 3D материал влияет на отражение и освещение, но в 2D это редко встречается.

Я думаю, что в этом случае мне следовало бы заставить сами снаряды "владеть" физическим телом

Да, любой моделируемый объект должен иметь тело с любым прикрепленным приспособлением. Используйте isBullte = true флаг для ваших снарядов. Если вашей игровой логике нужно вызывать какие-то методы для ваших снарядов, просто сохраните список ссылок, но для этого вам не нужна композиция.

...