Maire Lv.9
Age : 37 Inscrit le : 04/02/2009 Messages : 326
| Sujet: Passabilité de Contours Lun 27 Avr 2009 - 0:08 | |
| Passabilité de contour
Intro:Tout le monde connait la passabilité normale: - "O" Le héros peut marcher au dessus des tiles. - "*" Le héros peut marcher au dessus du Tile A, et dessous des autres tiles. - "X" Le heros ne peut pas marcher sur la case. Cependant, elle ne suffit pas forcément, les exemples sont nombreux sans chercher très loin. - Spoiler:
Matériel nécessaire: - un event invisible à la hauteur du héros, ce sera un bloqueur - un processus en parallèlle, qui sera la gestion à proprement parler. - un peu d'astuce. Les applications qui en découlent, dépendent pour beaucoup de votre imagination, mais voici quelques exemples: - bloquer une direction sur une localité. - donner un sens de passage à une localité.
Les possibilités se multiplient avec le nombre d'events bloqueurs (3 étant le max de direction à bloquer).Le principe est de placer le(s) bloqueur(s) en fonction des positions du héros. Les cases en haut et bas de l'escalier sont marchables, cependant elles ne sont pas physiquement sur le même niveau, donc le héros doit pouvoir marcher dessus sans pour autant pouvoir passer de l'une à l'autre. La passabilité simple ne permet pas de régler ce genre de problème de traversabilité (ce que j'aurais eu tendance à appeller passabilité, puisque ça correspond vraiment aux sens passables ou non).
Visuellement, la passabilité normale s'occupe des cases, et ce tuto des bordures, d'où passabilité de contours. Commençons le travail:- Spoiler:
1) Comptez le nombre de direction à bloquer au maximum.Ici, on se retrouver avec 2 directions à bloquer simultanément. Il nous faudra donc 2 bloqueurs au minimum.2) Définissez un (ou des) emplacement(s) par défaut pour vos bloqueurs. Ils retournerons à ces emplacements si rien n'est à bloquer. Il faut que ce soit une case non tranversable par défaut (ce n'est pas ce qu'il manque sur une mapp, l'eau, les barrières... ). 3) Faites-vous un petit schéma avec les coordonnées des positions à bloquer, les coordonnées de décisions. Les coordonnées de décisions correspondent aux valeurs qui vont conditionner les placements et les déplacements des bloqueurs par le processus de gestion. Faire un schéma ou des schémas vous permettra de vous y retrouver.4) Implémentation de la gestion La gestion est processus parallèle donc une boucle en soi. L'intérieur de la gestion est assez simple. Ce sont des conditions sur les coordonnées du héros avec les valeurs de décisions. Afin de rester ordonné, il convient d'écrire d'abord toutes les conditions sur une variable (X ou Y, généralement celle qui sera soumise à plus de conditions), puis sur la seconde. La position par défaut est utilisés si aucune des conditions n'est réalisée. Ramenez les bloqueurs à leur position de départ casi systèmatiquement, afin de pas les laisser trainer n'importe où. Si vous n'en utilisez qu'un pour des coordonnées précises n'oubliez pas de ranger l'autre...
Etre ordonné est le maître mot. 5) Tester...>>Démo SimpleJe ne le fait qu'à moitier dans la démo simple pour bien montrer l'utilité... (et parce que j'ai un peu la flème) Annexes:- Spoiler:
Annexe 1: Interaction avec d'autres event Il se peut que votre map contienne d'autres events succeptibles de jouer le rôle de bloqueur. Il suffit de jongler avec le mode "passe-muraille".Les statues "cristaux" des 2 coins surpérieurs de la surélévation en sont un exemple: Elles sont décalées pour paraître à cheval entre deux carreaux (pour un effet de perpective). De ce décalage (purement visuel), il en écoule que les cristaux doivent être marchables lorsque le personnage est sur l'élévation, mais un bloqueur se trouve la case suivante pour ne pas passer au travers des statues. Cependant quand le personnage n'est pas sur l'élévation, les statues bloquent le passage tout simplement. Annexe 2: Problème de décoration Parfois, pour garder une certaine cohérance dans les couches, il vous faudra utiliser un autre type d'event, "de décoration". Tous les events sur les maps (dont le héros) sont décalés de 4 pixels verticalment (je ne suis plus sûr du nombre exact) par rapport aux tuiles. Alors pour éviter que notre héros se fasse couper la toufe par endroit, il faut parfois ruser.
L'event de décoration est en mode passe-muraille et au dessus du héros. Il est à l'image d'un tile (Attention aux 4 pixels de décalage! il faut qu'il soit donc tronqué de 4 pixels sur son set... je monterez l'exemple des escaliers) et le tile correspondant est en passabilité "O" soit au dessous du héros. Ainsi on se retrouve avec deux couches de la même apparance. L'event peut servir à plusieurs endroits donc, vous pouvez créer votre petit charaset correspondant. Le principe est de le placer quand le personnage est aussi sur la localisation de la tile correspondant à l'élément de décor.
C'est encore assez simple.
Le coin supérieur des escaliers lattéraux en sont un bon exemple: C'est un conséquence de la surélévation, les escaliers sont entre les deux niveaux profondeurs. Quand on est sur la surélévation, ils sont au desous de nous, quand on est sur le sol bas, ils sont au dessus de nous. (Dans le fond c'est comme un pont ou une arche où l'on peut aller au-dessus et au-dessous (je ferais un exemple de pont ou arche à deux niveaux plus tard, je trouvais que l'exemple des escaliers latteraux plus complet).
Annexe 3: Déplacemments modifiésCette même boucle peut servir à beaucoup de choses dont les déplacements modifiés. Dans les escaliers latéraux, il est normal que le héros monte d'une case en montant sur l'élévation, pourtant on ne modifie pas les commandes des touches directionnelles, c'est la boucle qui réinterprète les commandes. Faites-vous des schémas récap si vous vous perdez sur votre map et surtout pour bien vérifier votre mapping car plus une carte à de niveaux de profondeur plus le mapping est compliqué)
J'ai buté dessus, LaMeche m'a filé un coup de pousse. Il suffit de tester sur une localisation si une touche est préssée, et de déplacer le Héros artifitiellement par le mouvement désiré.
Indication si vous modifiez la vitesse : C'est là où j'ai buté, ma gestion souffrait d'un retard voir d'un délai. Cela vient si l'on ne sépare pas les mouvements forcés, des modifications de vitesse car la dernière chose que le héros [s]doit[/s] "attendre" est le déplacement en lui-même... (Si vous oubliez de séparer les deux vous le verrez bien au test )
>>Démo AvancéeElle contient le système avec les annexes. (c'est une map de mon projet perso dont je n'ai pas beaucoup parlé, elle n'est pas du tout finie mais le système de passabilité lui est fini. Cette carte à été examinée par LaMeche, mais seulement pour les déplacements, et les bloqueurs. Les cristaux c'est une autre paire de manche) Une autre alternative: Lien vers un script d'Ashka permettant de modifier les passabilités.J'ai réalisé un script permettant de réaliser la même chose en plus simple et plus rapidement pour le processeur...
Dernière édition par vincentmhd le Lun 31 Aoû 2009 - 22:47, édité 5 fois |
|
Roi des Lapinous
Age : 34 Inscrit le : 11/10/2008 Messages : 2292
| Sujet: Re: Passabilité de Contours Lun 27 Avr 2009 - 5:49 | |
| Il y a énormément plus simple pour faire ceci mais ton event mange beaucoup moins de place, et ça c'est intéressant. Alors bravo ^^ +3 en event. |
|