Последние 3-4 года я работал над некоторыми хобби-проектами. Просто простые 2d и 3d игры. Но в последнее время я начал больший проект. Так, в последние пару месяцев я пытался создать класс игровых объектов, который может стать основой всех моих игровых объектов. Поэтому после долгих испытаний и испытаний я обратился к Google, который быстро указал мне на некоторые PDF-файлы GDC и PowerPoints. И теперь я пытаюсь понять, какие игровые объекты основаны на компонентах.
Я понимаю, что движок создает игровой объект, а затем присоединяет различные компоненты, которые обрабатывают такие вещи, как здоровье, физика, сети и все, что вы заставляете их делать. Но я не понимаю, как компонент X знает, изменил ли Y состояние объекта. Например, как PhysicsComponent узнает, жив ли игрок, потому что здоровье контролируется HealthComponent ..? И как HealthComponent играет "анимацию игрока-умершего"?
У меня сложилось впечатление, что это было что-то вроде этого (в HealthComponent):
if(Health < 0) {
AnimationComponent.PlayAnimation("played-died-animation")
}
Но опять же, как HealthComponent узнает, что к игровому объекту, к которому он прикреплен, прикреплен AnimationComponent? Единственное решение, которое я вижу здесь, это
Проведите проверку, чтобы увидеть, подключен ли компонент AnimationComponent (внутри кода компонента или на стороне двигателя)
Для компонентов требуются другие компоненты, но это, кажется, борется со всей конструкцией компонентов.
Напишите, например, HealthWithAnimationComponent, HealthNoAnimationComponent и так далее, что, опять же, похоже, противоречит всей идее разработки компонентов.