Solarus Wiki

A wiki for the Solarus engine community

Outils pour utilisateurs

Outils du site


fr:tutorial:npc_second_part

Différences

Cette page vous affiche les différences entre la révision choisie et la version actuelle de la page.

Lien vers cette vue comparative

Both sides previous revision Previous revision
Next revision
Previous revision
fr:tutorial:npc_second_part [2014/02/19 07:34]
renkineko
fr:tutorial:npc_second_part [2018/12/22 14:14] (Version actuelle)
Ligne 11: Ligne 11:
 ===== Une pancarte ===== ===== Une pancarte =====
  
-A l'​extérieur du village, mettez un PNJ généralisé par exemple au milieu du portail de la maison au nord, afin d'en empêcher l'​entrée. Comme sprite, mettez la pancarte (ou Sign en anglais), et mettez un dialogue disant qu'il s'agit d'une propriété privée.+A l'​extérieur du village, mettez un PNJ généralisépar exemple au milieu du portail de la maison au nord, afin d'en empêcher l'​entrée. Comme sprite, mettez la pancarte (ou Sign en anglais), et mettez un dialogue disant qu'il s'agit d'une propriété privée.
  
-La principale différence avec les PNJs usuels et les PNJs généralisés,​ c'est que les PNJs usuels peuvent toujours être accostés de tous les côtés, ils se tourneront vers le joueur du côté ​qu'​il ​les accoste si leur sprite le permet. Donc, l'​option "​direction"​ correspond à la direction par défaut de leur sprite, avant que le joueur ne leur ai parlé.+La principale différence avec les PNJs usuels et les PNJs généralisés,​ c'est que les PNJs usuels peuvent toujours être accostés de tous les côtés, ils se tourneront vers le joueur du côté ​qui les accoste si leur sprite le permet. Donc, l'​option "​direction"​ correspond à la direction par défaut de leur sprite, avant que le joueur ne leur ai parlé.
  
 Mais dans le cadre d'un PNJ généralisé,​ la direction fait partie intégrante du comportement du PNJ : c'est la direction dans laquelle le PNJ regarde, et donc si le joueur essaye de l'​accoster depuis un autre endroit que celui dans lequel l'​entité regarde, rien ne se passera. C'est le cas pour les pancartes : la direction à indiquer est "​Down",​ car elles ne sont lisibles que depuis le bas. Mais dans le cadre d'un PNJ généralisé,​ la direction fait partie intégrante du comportement du PNJ : c'est la direction dans laquelle le PNJ regarde, et donc si le joueur essaye de l'​accoster depuis un autre endroit que celui dans lequel l'​entité regarde, rien ne se passera. C'est le cas pour les pancartes : la direction à indiquer est "​Down",​ car elles ne sont lisibles que depuis le bas.
Ligne 25: Ligne 25:
 Nous allons désormais faire une grande amélioration par rapport aux réceptionnistes de la bibliothèque. Mettez comme sprite pour le PNJ de l'​entrée ''​ALTTP static villager 2''​ (et ajoutez à son dialogue l'​option ''​skip = "​all",''​ pour pouvoir faire vos tests plus rapidement, car les réceptionnistes sont bavards). Nous allons désormais faire une grande amélioration par rapport aux réceptionnistes de la bibliothèque. Mettez comme sprite pour le PNJ de l'​entrée ''​ALTTP static villager 2''​ (et ajoutez à son dialogue l'​option ''​skip = "​all",''​ pour pouvoir faire vos tests plus rapidement, car les réceptionnistes sont bavards).
  
-Mettez un PNJ généralisé en face du PNJ usuel mais sur le comptoir et sans sprite. Donnez-lui le même dialogue que le réceptionniste qu'il prolonge, et parlez maintenant au réceptionniste depuis un côté. Si vous vous mettez ensuite de l'​autre côté du comptoir et que vous lui parlez, vous aurez bien le dialogue qui s'​enclenche, problème ​: le réceptionniste ne change pas de direction.+Mettez un PNJ généralisé en face du PNJ usuel mais sur le comptoir et sans sprite. Donnez-lui le même dialogue que le réceptionniste qu'il prolonge, et parlez maintenant au réceptionniste depuis un côté. Si vous vous mettez ensuite de l'​autre côté du comptoir et que vous lui parlez, vous aurez bien le dialogue qui s'​enclenche. Problème ​: le réceptionniste ne change pas de direction.
  
-Comme ce sont deux entités séparées, c'est normal. Nous allons donc devoir appeler un petit script de la map. Donnez un nom à votre PNJ généralisé (par exemple : ''​receptionnist_counter''​) ainsi qu'à votre réceptionniste normal (par exemple : ''​receptionnist''​ en toute simplicité),​ puis ouvrez le script de la map pour y mettre le code suivant :+Comme ce sont deux entités séparées, c'est normal. Nous allons donc devoir appeler un petit script de la map. Donnez un nom à votre PNJ généralisé (par exemple : ''​receptionnist_counter''​) ainsi qu'à votre réceptionniste normal (mettons ​''​receptionnist''​ en toute simplicité),​ puis ouvrez le script de la map pour y mettre le code suivant :
  
 <code lua> <code lua>
Ligne 39: Ligne 39:
 </​code>​ </​code>​
  
-Petite explication sur la première ligne de la fonction, la seconde vous la connaissez déjà. Lorsque nous parlons au réceptionniste depuis le comptoir, nous récupérons le sprite du réceptionniste et nous lui donnons la direction 3. Il s'agit de l'​indice de direction dans la déclaration du sprite. Les personnages de Zelda Mystery of Solarus DX ont tous cette convention : la direction 0 regarde vers la droite, 1 vers le haut, 2 vers la gauche et 3 vers le bas. Tous les calculs réalisés en rapport avec des angles sont gérés ainsi dans le moteur.+Petite explication sur la première ligne de la fonction, la seconde vous la connaissez déjà. Lorsque nous parlons au réceptionniste depuis le comptoir, nous récupérons le sprite du réceptionniste et nous lui donnons la direction 3. Il s'agit de l'​indice de direction dans la déclaration du sprite. Les personnages de Zelda Mystery of Solarus DX ont tous cette convention : la direction 0 regarde vers la droite, 1 vers le haut, 2 vers la gauche et 3 vers le bas. Tous les calculs réalisés en rapport avec des angles sont gérés ainsi dans le moteur, cela facilite donc la direction.
  
-Mais si votre sprite possède plus de 4 directions, mettons qu'il en possède 8, il faut juste que vous connaissiez votre déclaration de sprite et que vous lui donniez la direction vers le bas. Dans ce cas, ce serait 6 (toujours selon la même convention où 0 = vers la droite). Vous comprendrez sans doute mieux lorsque nous parlerons des sprites, mais pas avant d'​être passé à la version 1.1 car la définition des sprites dans la version 1.0 est imbitable.+Mais si votre sprite possède plus de 4 directions, mettons qu'il en possède 8, il faut juste que vous connaissiez votre déclaration de sprite et que vous lui donniez la direction vers le bas. Dans ce cas, ce serait 6 (toujours selon la même convention où 0 = vers la droite ​et tournant dans le sens anti-horaire). Vous comprendrez sans doute mieux lorsque nous parlerons des sprites, mais pas avant d'​être passé à la version 1.1 car la définition des sprites dans la version 1.0 est imbitable.
  
-Désormais, si vous parlez depuis le comptoir, le PNJ se tourne bien dans la bonne direction. Evidemment, toute cette organisation n'est nécessaire que dans le cadre où le PNJ usuel se tourne vers vous. Si vous aviez pris le sprite ''​ALTTP static villager 14''​ présent ​par défaut, étant donné qu'il ne regarde que vers le sud, vous n'​auriez pas eu besoin de changer sa direction. Cependant dans tous les cas, il est plutôt conseillé de laisser ce comportement pour les PNJ généralisé ​: si vous changez d'avis un jour et que vous décidez de mettre un PNJ pouvant se tourner, vous n'​aurez alors pas à repasser derrière le comportement du PNJ généralisé pour le mettre à niveau.+Désormais, si vous parlez depuis le comptoir, le PNJ se tourne bien dans la bonne direction. Evidemment, toute cette organisation n'est nécessaire que dans le cadre où le PNJ usuel se tourne vers vous. Si vous aviez pris le sprite ''​ALTTP static villager 14''​ présent ​à l'​origine dans ce chapitre, étant donné qu'il ne regarde que vers le sud, vous n'​auriez pas eu besoin de changer sa direction. Cependant dans tous les cas, il est plutôt conseillé de laisser ce comportement pour les PNJs généralisés ​: si vous changez d'avis un jour et que vous décidez de mettre un PNJ pouvant se tourner, vous n'​aurez alors pas à repasser derrière le comportement du PNJ généralisé pour le mettre à niveau.
  
 ===== Exercice ===== ===== Exercice =====
fr/tutorial/npc_second_part.txt · Dernière modification: 2018/12/22 14:14 (modification externe)