Итак, я начинаю вводить атаку на нашу двумерную космическую RTS (это в Unity, так что это компонентно управляемый). Первоначально это было так же просто, как «враг в радиусе действия, наносимый урон». Однако будет несколько «типов» оружия / атак, которые связаны с их конкретным кораблем или структурой. А также другие факторы, связанные с прошлым, просто грубый урон, такой как тип урона и, возможно, инерция в будущем.
Ребята, хотите, чтобы у каждого юнита и типа конструкции был свой атакующий тип. То есть вы создаете скрипт для каждого юнита / структуры, который определяет его тип атаки, урон, эффекты, радиус действия, частицы, спрайты ... и т. Д. И присоединяете это как компонент?
Или создайте сценарий, который определяет тип атаки, сценарий для типа снаряда, связанного с этим ... и т. Д. А затем расширьте их и измените их для каждого подразделения, прикрепив каждый сценарий к устройству / структуре.
Надеюсь, у меня есть какой-то смысл, я так долго размышлял над этим, я не уверен, решаю ли я проблему, или просто придумываю свои собственные проблемы и копаю себя в яме.
Если у вас есть игра, которая может иметь множество типов атак, которые могут или не могут быть ограничены определенным модулем / структурой, как вы проектируете структуру, которая связывает это вместе с конкретными модулями / структурами в среде разработки, управляемой компонентами ?
Если это не достаточно ясно, дайте мне знать.
Изменить: отличные ответы, спасибо.
Расширенный вопрос:
Кажется, что ответы могут варьироваться от «каждый объект может иметь свой собственный скрипт атаки» на «иметь типы атак в качестве своих собственных сценариев и назначать их каждому объекту для более многоразового решения». Допустим, у меня «бластерная» атака, она стреляет красным снарядом с определенной скоростью. Его урон, скорость стрельбы и размер снаряда зависят от отряда, стреляющего в него. Что лучше сделать сценарий атаки для этого подразделения, или попытаться изменить «бластерную атаку» в соответствии с назначением каждого подразделения, которое хочет его использовать?