Salut
hanakin,
J'imagine que tu as regardé
le projet de démonstration que je propose avec le module. Dans ce projet, je fais apparaître et disparaître les PNJ selon leur proximité de la zone visible dans la pièce (sur ce point, c'est similaire au moteur d'origine de
Super Mario World).
Le code peut paraître un peu complexe, mais l'idée c'est que je définis des coordonnées d'apparition spécifique à chaque PNJ (avec des propriétés personnalisées X et Y) et lorsque le personnage joueur se trouve suffisamment près de ces coordonnées, je les fais apparaître avec cette commande (ou
perso est une variable
Character qui réfère au PNJ en question) :
- Code:
-
perso.Apparait(perso.GetProperty("X"), perso.GetProperty("Y"));
Si tu regardes cette fonction
Apparait, tu vois ces deux-lignes importantes :
- Code:
-
this.ChangeRoom(player.Room, x, y);
PF_Persos[id].Initialize(this);
Pour placer un PNJ (cEnnemi par exemple) dans le niveau il faut donc simplement lui donner les coordonnées auxquelles tu veux qu'il se trouve, et ensuite avertir le moteur que ce personnage fait partie du système de plateforme avec
PF_Persos[cEnnemi.PF_GetNumber()].Initialize(cEnnemi);. (Il y a un peu de redondance dans cette commande, je ne sais pas pourquoi)
Une fois que tes persos sont placés dans le décor, tu dois gérer leurs déplacements toi-même dans le script. Par exemple, les boulets de canons se déplacent en permanence vers la gauche, donc j'ai placé la commande suivante dans
repeatedly_execute (où
id correspond à la valeur retournée par
PF_GetNumber pour chaque boulet de canon) :
- Code:
-
PF_Persos[id].Marche(-1);
Ainsi, à chaque cycle de jeu, les canons se déplacent vers la gauche (-1).
_________________
Ga is Ga
Vous pouvez consulter l'
aide d'AGS 3.2 en français et contribuer à la traduction et à l'amélioration si le cœur vous en dit !