Trois types de coordonnées, avec l'EventExtender
Ce tutoriel est une petite explication simple pour ne plus jamais vous tromper avec les coordonnées X et Y !
Surtout qu'il faut impérativement savoir... qu'en plus des deux types de coordonnées couramment utilisées... l'EventExtender en rajoute un troisième !
- Joke, 14/11/2014 à 01h23.


Trois types de coordonnées, avec l'EventExtender - Joke

Trois types de coordonnées, avec l'EventExtender



Ce tutoriel est une petite explication simple pour ne plus jamais vous tromper avec les coordonnées X et Y !
Surtout qu'il faut impérativement savoir... qu'en plus des deux types de coordonnées couramment utilisées... l'EventExtender en rajoute un troisième !

C'est un petit pré-requis nécessaire, par exemple, pour mieux savoir utiliser les zones d'interaction présentées récemment par Grimounet !
Smiley

icone Les coordonnées X/Y... en principe !



Là, je m'adresse uniquement aux collégiens, oui oui, y'en a qui sont là et c'est bien !
Smiley


- La coordonnée X d'un point donne la position horizontale de ce dernier.
- La coordonnée Y d'un point donne la position verticale de ce dernier.

Et simplement, dans RM, c'est pas comme en maths :



Comme presque tout le temps en graphisme/informatique :

- L'origine (X=0, Y=0) est en haut à gauche. (et non en bas à gauche)
- Le sens positif des coordonnées Y est vers le bas. (et non vers le haut)

Ce qui fait que... plus le point est bas, plus sa coordonnée Y est élevée !

Je dis ça juste pour certains tutoriels qui expliquent encore les coordonnées avec un schéma où l'axe des ordonnées pointe vilainement vers le haut !


icone La position, ok... mais de quoi ?



Par défaut, en événement, on peut avoir les coordonnées (donc, la position)...

- Du héros
- D'un événement

...Avec l'EventExtender, on peut en plus avoir la position de la souris ! Smiley


icone Les différents types de coordonnées... !



Il est déjà nécessaire pour le parfait newbie (comme pour les grands) de connaître les deux types de coordonnées accessibles par défaut en événement grâce à la commande "Modifier variables/Gestion des variables".



Les deux types de coordonnées bien connus en événement :



Smiley Coordonnées "X carte", "Y carte"
(Aussi nommé "Coordonnées X et Y" ou encore "Coordonnée X carreaux et Y carreaux")

Elles donnent la position de l'événement (ou du héros) sur la carte.

C'est une coordonnée dont l'unité est le carreau,
qui prend pour origine (X=0,Y=0) le carreau haut/gauche de la map.


Extrait de "Tout, tout, tout sur les variables, partie 1/2" (Lien ici)
Les coordonnées "X carte" et "Y carte" (ou "X et Y") donnent la position de l'événement ou du héros... Sur la carte !

Imaginez que votre carte, avec ses carreaux, forme un tableau :
- On a les colonnes de 0 à "Largeur de la map -1"
- On a les lignes de 0 à "Hauteur de la map -1"
- Le carreau tout en haut à gauche de la map a les coordonnées X=0, Y=0
- Le carreau tout en bas à droite de la map a les coordonnées X=LargeurMap-1, Y=HauteurMap-1


(Exemple sous RMVX Ace, mais c'est pareil pour tout RM, excepté dans le 2003 où on ne voit pas l'ID de la map ici, mais dans les propriétés de la map. J'ai simplement nommé les colonnes et lignes du tableau que forment les carreaux de la map pour que vous situiez tout ça)


Comme vous pouvez le voir sur le screen d'exemple, en cliquant sur n'importe quel carreau de votre map, vous pouvez directement voir ses coordonnées en bas à droite de l'éditeur de map.

Grâce à cette option, il est possible de stocker dans une variable la coordonnée X ou Y d'un événement ou du héros, ce qui est très pratique pour savoir si un événement se trouve à une position donnée, si par exemple on peut déplacer un gros cube, et on doit le pousser jusqu'à le poser sur un interrupteur, il suffit de stocker dans deux variables les coordonnées X et Y du gros cube, et faire deux conditions imbriquées : La première, par exemple, si "Variable X" = 5, la seconde, par exemple, si "Variable Y" = 8, on sait que le gros cube est placé sur l'interrupteur de position X=5, Y=8.[/quote]




Smiley Coordonnées "X écran", "Y écran" :

Elles donnent la position de l'événement (ou du héros) sur l'écran.

C'est une coordonnée dont l'unité est le pixel,
qui prend pour origine (X=0,Y=0) le pixel haut/gauche de l'écran.


Extrait de "Tout, tout, tout sur les variables, partie 1/2" (Lien ici)
Citation :
Les coordonnées "X écran" et "Y écran" donnent la position de l'événement par rapport à l'écran !
Et cette position est au pixel près ! Et non pas à partir du point 0,0 de la carte mais à partir du point 0,0 qui est le premier pixel en haut à gauche de l'écran du jeu !


(Exemple sous RMVX Ace, bien sûr j'ai ajouté les règles en haut et à gauche sous photoshop, n'allez pas chercher ça sous RM !)


Si cela nous donne la position à l'écran d'un pixel sur l'événement/le héros... Oui mais lequel ?

Quel que soit la version de RPG Maker, il s'agira toujours du point en bas au centre du sprite (charset) de l'événement, celui-là même :


(Point à partir duquel on récupère la coordonnée X, Y écran, situé tout en bas verticalement, au centre du sprite horizontalement. C'est à partir de ce point que le sprite est affiché dans le jeu.)




Alors pour les habitués... c'est là qu'il faut faire attention... ! Smiley

Un troisième type de coordonnées avec l'EventExtender !



Smiley Coordonnées "X pixel", "Y pixel"

Elles donnent la position de l'événement, du héros, du follower sur la map.

C'est une coordonnée dont l'unité est LE PIXEL,
qui prend pour origine (X=0,Y=0) le pixel haut/gauche de LA MAP.



Rien que ça, on peut avoir la position précise au pixel près d'un événement par rapport à la map, et non plus seulement par rapport à l'écran.

Quelle idée ? Pouvoir faire des zones fixées sur la map et non fixées sur l'écran, par exemple.



Voici donc une illustration qui montre les trois types de coordonnées :



En bleu, nous avons l'écran, et donc les coordonnées écran, précises au pixel près.
En rouge, nous avons la map, et donc les coordonnées carte, en carreau, ainsi que, dorénavant, les coordonnées pixel, précises au pixel près.



icone Les commandes correspondantes, avec l'EventExtender !



Voici donc finalement la liste des commandes qui correspondent à ce que j'ai expliqué :

Coordonnées "X carte" et "Y carte"



Code (Ruby):
  1. # Du héros :
  2. player_x
  3. player_y
  4.  
  5. # D'un événement :
  6. event_x(id)
  7. event_y(id)
  8.  
  9. # De la souris :
  10. mouse_x_square
  11. mouse_y_square


Coordonnées "X écran" et "Y écran"



Code (Ruby):
  1. # Du héros :
  2. player_screen_x
  3. player_screen_y
  4.  
  5. # D'un événement :
  6. event_screen_x(id)
  7. event_screen_y(id)
  8.  
  9. # De la souris :
  10. mouse_x
  11. mouse_y


Coordonnées "X pixel" et "Y pixel"



Code (Ruby):
  1. # Du héros :
  2. player_pixel_x
  3. player_pixel_y
  4.  
  5. # D'un événement :
  6. event_pixel_x(id)
  7. event_pixel_y(id)



icone Quel type de coordonnée utiliser, et quand ?



Quand il s'agit d'afficher une image...

Il est important de comprendre que dans tous les cas, on affiche les images... sur l'écran, et non sur la map !

En effet, les coordonnées X et Y d'une image sont des coordonnées écran. Donc si on veut par exemple afficher une image sur le héros, il faut bel et bien utiliser les coordonnées écran du héros, et non les coordonnées pixel !

Quand il s'agit d'utiliser les zones d’interaction de l'EE...

Alors là, carte blanche !
Il est très important de noter que tous les outils de création et utilisation des zones de l'EventExtender (si joliment présentés ici) ne distinguent pas le type de coordonnée.

En effet, si on créé par exemple une zone rectangulaire... on donne deux points.
Sont-ils exprimés en coordonnées carte ?
En coordonnée écran ?
En coordonnée pixel ?

Vous faites ce que vous voulez !

C'est à vous de vous poser la question, quand vous créez la zone, si vous donnez des coordonnées/dimensions qui sont en pixel ou carreau, si c'est par rapport à la map, par rapport à l'écran, après tout ce ne sont que des valeurs.

Il suffit juste de rester cohérent quand vous contrôlerez si un point est dans la zone.

Si vous faites un point&click, vous allez contrôler si la souris est dans la zone.

La position de la souris peut être donnée en coordonnées écran... soit ! Faites une zone à partir des coordonnées à l'écran !

Si vous faites un A-RPG, avec la hit-box de l'arme du héros qui devra percuter le monstre... vous avez le choix entre les trois !

- Soit vous vous en foutez de la précision, vous faites la zone en carreau, à partir de la position carte du héros, et vous contrôlez si la position carte du monstre est dedans...
- Soit vous voulez être précis, vous faites la zone en pixel, à partir de la position pixel du héros, vous contrôlez avec la position pixel du monstre...
- Vous pouvez toujours utiliser la position écran du héros, si vous êtes cohérent et utilisez la position écran du monstre également !

Si vous faites apparaître une étoile fixée sur le sol de la map, et qu'avec une zone polygonale vous contrôlez si le héros la touche ou non... utilisez les coordonnées pixel, car vous saurez facilement où se trouve l'étoile sur la carte, alors que c'est plus difficile de savoir où elle se trouve à l'écran !

Utilisez le type que vous voulez, mais ne mélangez pas les différents types entre eux, tout simplement ! Smiley


icone Conclusion



Au final, ce tutoriel pourrait se résumer en quelques lignes, mais comment expliquer simplement qu'une chose est simple ? SmileyJe ne sais pas le faire ! Smiley

J'espère que cet article n'est pas trop chiant, qu'il est assez compréhensible, je garde à l’œil vos futurs commentaires si vous avez des questions !

Vous devriez ne plus avoir d'excuses pour ne pas maîtriser parfaitement la position de n'importe quoi ! Comme par exemple, afficher et animer du texte au-dessus de la tête de n'importe quel événement, ou encore sur un écran géant qui fait partit de la map, sinon tout simplement à l'écran ! Smiley

Bilou !

Index

Tags

Annonces
Bilou Concept
BilouCorp
Découvertes
Event Extender
Jeux
RPG Maker
Script
Tutoriel

Auteurs

2cri
Grim
Hiino
Joke
Nuki
PypeBros
Raho
S4suk3

Suivez nous
Rss

Poster un commentaire



Commentaires

Nuki
Il faudrait trouver une convention pour le nom "Event-Extender", parfois on a "EE", parfois "Eventextender", parfois "Event-Extender" et parfois "EventExtender". Posté le : 14/11/2014 à 07h53
Spyrojojo
Jolie tuto, pas de nouveauté pour moi, mais de bon petit rappel (et j'ai enfin enregistré la différence entre les coordonnés pixels et le coordonné écran) Posté le : 14/11/2014 à 01h36