Donc, je commence à introduire l'attaque à notre espace 2D RTS (c'est dans Unity, donc il est piloté par composants). Au départ, c'était aussi simple que «ennemi à portée, dégâts infligés». Cependant, il y aura plusieurs "types" d'armes / attaques associées à leur navire ou à leur structure. Ainsi que d'autres facteurs impliqués dans le passé, des dommages bruts tels que le type de dommage, et éventuellement l'inertie à l'avenir.
Souhaitez-vous que chaque type d'unité et de structure possède son propre type d'attaque? Cela signifie que vous créez un script pour chaque unité / structure qui définit son type d'attaque, ses dégâts, ses effets, sa portée, ses particules, ses sprites ... etc. Et attachez-le en tant que composant?
Ou faire un script qui définit un type d'attaque, un script pour le type de projectile associé à cela ... etc Et puis étendre ceux-ci et les modifier pour chaque unité, en attachant chaque script à l'unité / structure.
J'espère que j'ai un certain sens, je réfléchis depuis si longtemps, je ne sais pas si je résous un problème, ou si je invente mes propres problèmes et me creuse dans un trou.
Lorsque vous avez un jeu qui peut avoir une multitude de types d'attaque qui peuvent ou non être limités à une unité / structure spécifique, comment concevez-vous le cadre qui le lie aux unités / structures spécifiques dans un environnement de conception piloté par composants ?
Si ce n'est pas assez clair, faites-le moi savoir.
Edit: Excellentes réponses, merci.
Question élargie:
Les réponses semblent varier de "chaque objet peut avoir son propre script d'attaque" à "Avoir les types d'attaque comme leurs propres scripts et les affecter à chaque objet pour une solution plus réutilisable". Disons que j'ai une attaque "blaster", il tire un projectile rouge à une certaine vitesse. Ses dégâts, sa cadence de tir et la taille du projectile dépendent de l'unité qui le tire. Est-il préférable de simplement créer un script d'attaque pour cette unité, ou d'essayer de modifier une "attaque blaster" pour l'adapter à l'objectif de chaque unité qui souhaite l'utiliser?