Я працював над деякими хобі-проектами останні 3-4 роки. Просто прості 2d та 3d ігри. Але останнім часом я розпочав більший проект. Так, останні кілька місяців я намагався створити клас ігрових об'єктів, який може бути базою всіх моїх ігрових об'єктів. Тож після довгого тестування і тестування я звернувся до Google, який швидко вказав мені на деякі файли GDC та PowerPoints. А зараз я намагаюся зрозуміти ігрові об’єкти на основі компонентів.
Я розумію, що двигун створює ігровий об’єкт, а потім приєднує різні компоненти, які обробляють такі речі, як здоров'я, фізика, мережа та все, що ви з цим робите. Але я не розумію, як компонент X знає, чи Y змінив стан об'єкта. Як, наприклад, як PhysicsComponent знає, чи гравець живий, адже здоров'я контролює HealthComponent ..? І як HealthComponent відтворює "анімацію-помер гравця"?
У мене було враження, що це було щось подібне (In HealthComponent):
if(Health < 0) {
AnimationComponent.PlayAnimation("played-died-animation")
}
Але знову ж таки, як HealthComponent знає, що до ігрового об’єкта, до якого він приєднаний, додається AnimationComponent? Єдине рішення, яке я бачу тут, - це
Проведіть перевірку, чи додано AnimationComponent чи ні (або всередині коду компонента, або з боку двигуна)
Якщо компоненти потребують інших компонентів, але це, здається, суперечить всій конструкції компонентів.
Напишіть, як, HealthWithAnimationComponent, HealthNoAnimationComponent та soo on, що, схоже, знову відповідає всій ідеї дизайну компонентів.