Voici un exemple d'une telle propagation du mucus. La substance est répartie autour de la source (dans cet exemple, la source serait le principal bâtiment étranger).
Le jeu est starcraft, la substance violette est appelée fluage.
Comment ce type de diffusion de substances serait-il réalisé dans un environnement 2D descendant? Recalculer la progression de la substance et régénérer l'effet à la volée à chaque image ou plutôt utiliser une grande collection de carreaux ou autre chose?
2d
algorithm
graphic-effects
nathan
la source
la source
Réponses:
Selon votre commentaire dans les autres réponses, votre problème n'est pas l'algorithme de croissance de fluage, mais plutôt l'algorithme qui choisit la tuile de fluage à utiliser.
La tuile à utiliser dépend:
Cela signifie que vous aurez besoin d'un total de 16 tuiles. Vous pouvez facilement les adresser avec un champ de bits. Voici un pseudocode qui choisira une tuile différente pour chaque constellation de fluage possible:
Notez que chaque fois que vous modifiez le statut d'infection d'une tuile, toutes les tuiles adjacentes infectées doivent être réévaluées, car leur voisinage a maintenant changé.
Comment concevoir les 16 graphiques de tuiles afin qu'ils s'emboîtent bien est une (nouvelle) question pour un graphiste.
la source
Il y a quelque temps, j'ai lu un article de stratégie qui expliquait en détail comment le fluage se répand dans Starcraft 2, j'ai du mal à le trouver maintenant, mais je me souviens que c'est assez simple et fonctionne un peu comme ça
Le moyen le plus simple de suivre le fluage des tuiles est probablement un indicateur pour chaque tuile - n'essayez pas de le recalculer à chaque tour.
Le temps entre les "ticks" peut être utilisé pour contrôler la vitesse de propagation du fluage, vous pouvez également permettre au fluage de se propager à plusieurs tuiles à chaque "tick", ou même de randomiser le temps entre les tics.
L'algorithme ci-dessus a pour effet que le fluage se propage plus rapidement s'il est bloqué par des falaises de chaque côté, mais vous pouvez plutôt choisir une tuile aléatoire à portée de la source de fluage et ensuite ne propager le fluage à cette tuile que si ce n'est pas une falaise. .
la source