En bossant sur mon RPG, j'ai été confrontée à un problème. L'une des rooms est composée de plusieurs niveaux : on peut marcher sous des ponts, aller à un étage, etc.
Comment simuler la présence simultanée de plusieurs étages superposés en une seule room ?
La solution est finalement assez simple.
Il suffit de faire autant d'aires de marche que d'étages. En arrivant dans la room, on désactive les aires de marche correspondant à l'étage supérieur.
Le truc ici étant de ne désactiver que les endroits qui ne sont pas superposés à un autre étage. Par exemple, si un pont à l'étage recouvre une aire de marche au rez-de-chaussée, on peut le laisser activé, sinon le personnage ne pourra pas passer sous le pont. En revanche, il faut activer le walk-behind du pont pour que le perso puisse marcher
en-dessous.
Et lorsqu'il est à l'étage, on programme la désactivation des aires de marche situées à l'étage inférieur, et on désactive les walk-behinds afin que, cette fois, le perso marche
sur le pont.
Exemple :
Nous avons ici deux étages : le sol, et les 2 ponts avec les terrasses.
Je délimite les aires de marche : ici, il y en a 3 différentes, celle du sol, celles du petit pont, et celle de la terrasse et du grand pont en haut. Au début, l'aire de marche du petit pont et celle du sol sont actives toutes les deux, mais pas celle de la terrasse et du grand pont puisqu'elles se trouvent au-dessus d'un endroit où le personnage ne peut pas marcher (le mur).
Je délimite les walk-behind. Quand le perso est au sol, il passe sous le pont. Quand il arrive sur la terrasse du haut, je désactive le walk-behind (grâce au code "SetWalkBehindBase (4,0);", 4 étant le numéro de la walk-behind du pont) et l'aire de marche du sol pour ne garder que celle de la terrasse et des ponts. Et voilà !