Petite info avant de commencer, si le plan cartésien de vous dis rien, je l'explique un peu plus loin dans le topic
Donc ne vous affolé pas.Histoire :
Cette idée de le faire en bête calcul m'est venur d'un script de nuki, sur les distances entre les personnages et events. (script des variables locals). Ainsi que le tuto de shin =)
J'ai vu qu'il utilisait la method Math.hypot(), elle calcule l'hypoténuse d'un triangle ( en gros )
Bref, ayant fait un pseudo triangle sur ma feuille, j'me suis rendu compte que le triangle ne sera pas toujours rectangle ... du coup il fallait passer à autre chose.
Et bien sur, vous connaissez tous cette chose (Pour les plus de 14-15ans), ce fameux truc que nous avons fait sur du putain de papier milimètré !
Ce fameux papier que tu n'avais jamais parce que tu l'utilise 3 fois dans l'année !
Avec ses fameux calcule pourrie qui te poussait à la question suivante : " Ca sert à quoi ? ", "Que vais je devenir si je ne sais pas ca ? "
Ca ne vous dis toujours rien ?
Des droites, des hyperboles, tangante de point, A et B etc etc !
Ca y est ca reviens ?
EH BEN OUI LE PLAN CARTESIEN SERT A QUELQUE CHOSE FINALEMENT !!!
La théorie
Bien maintenant que la partie d'histoire est terminé, passons à la pratique ou plutot ... la théorie.
Nous allons donc dans un premier temps créer notre plan cartésien.
Voici à quoi celà doit ressembler ( pour les plus jeunes )
nous avons donc X Y et O
X = abscise = horizontale
Y = ordonnée = vertical
O = l'origine soit 0(zeros
)
Donc voici le plan cartésien complet si j'puis dire.
Sauf que nous, nous allons juste nous contenter de la partie rouge.
Puisque RPG maker n'a pas de coordonnée négative.
Voici ce que l'on peu s'imaginer sur RPGmaker.
Nous avons X,Y et notre origine.
Le héro sera le point A et l'event le point B
Le but sera de calculer la distance entre ces deux points.
Voici la forumule qui permet de le trouver :
Legende :
V = racine carré
² = carré du nombre (soit 5² = 25 car 5X5=25)
- Code:
-
x = V (xb-xa)²+(yb-ya)²
Nous allons développer tout ca :
Nous allons dons prendre les coordonnées de nos 2 points.
Ici notre héros est à 7x et 6Y
Et notre event est à 12x et 6Y
Donc le héros = A
l'event = B
Reprenons le calcule :
- Code:
-
x = V (xb-xa)²+(yb-ya)²
x = V (12-7)²+(6-6)²
Bon ici, nous allons être embêté car RPGmaker ne permet pas de faire un racine carré.
Mais il y a d'autre moyen, donc nous allons développer le calcule pour s'en passer.
Reprenons :
x = V (12-7)²+(6-6)²
x = V (12-7)*(12-7) + (6-6)*(6-6)
Pourquoi ai je fais ca ?
Tout simplement parce que (²) signifie grossièrement multiplice se nombre par lui même.(cf : le début du cours )
Alors :
- Code:
-
x = V (12-7)*(12-7) + (6-6)*(6-6)
x = V (5)*(5)+(0)*(0)
x = V 25+0
Alors c'est maintenant qu'il va falloire virer la racine carré.
Pour ce faire voici la solution :
- Code:
-
x = V 25+0
x = V 25
x² = 25
En fait, c'est une propriété en math, on peut passer des élément de l'autre coté du "="
Exemple :
x = 6 - 3
x + 3 = 6
Lorsque l'on passe une valeur de l'autre coté du égale, son signe change.
Un "+" devient un "-"
Un "-" devient un "+"
Un "V" de vient un "²"
et plein d'autre encore.
Donc la, pour m'e débarrasser de la racine carré, je le passe de l'autre coté pour avoir un simple carré (²)
Nous avons maintenant la distance entre nos 2 points.
Malheureusement, nous on veut qu'il n'y ai que 5 entre le héros et l'event.
Donc pour simuler la racine carré nous allons procéder ainsi :
- Code:
-
x² = 25
- Code:
-
Rayon = 5 ( soit le nombre de carreau )
distance = rayon²
distance = 25
X² et distance vale tout les deux 25 donc nous pouvons maintenant faire bouger notre event =)
Bon la partie théorie est terminé.
Pratique :
Alors en pratique ca va être un peu chiant car avec RPGmaker on doit tout faire opération par opération.
Donc voici à quoi ressemble l'event :
Je vais vous expliquer :
- Code:
-
Variable 001 coordonnéeXhero = coordonnée X du héros
Variable 002 coordonnéeYhero = coordonnée Y du héros
Variable 003 coordonnéeXevent = coordonnée X de l'event
variable 004 coordonnéeYevent = coordonnée Y de l'event
Donc :
- Code:
-
x = V (xb-xa)²+(yb-ya)²
x = V (12-7)*(12-7) + (6-6)*(6-6)
x = V (5)*(5)+(0)*(0)
est tout simplement = à
- Code:
-
Variable 001 coordonnéeXhero - Variable 003 coordonnéeXevent
Variable 001 coordonnéeXhero X Variable 001 coordonnéeXhero
Puisque Variable 001 coordonnéeXhero vaut maintenant
"Variable 001 coordonnéeXhero - Variable 003 coordonnéeXevent"
Nous faisons pareil pour Y
- Code:
-
Variable 002 coordonnéeYhero - Variable 004 coordonnéeYevent
Variable 002 coordonnéeYhero X Variable 002 coordonnéeYhero
On aditionne les deux resultat
- Code:
-
Variable 001 coordonnéeXhero + Variable 002 coordonnéeYhero
Variable 001 coordonnéeXhero vaut maintenant 25
soit x²
Nous n'avons plus qu'à créer 2 autre variable.
J'en ai fais qu'une, mais vous comprendrez pourquoi.
Donc nous allons créer la variable "Rayon" et la variable "distance"
- Code:
-
Variable 005 rayon = 5
Variable 006 distance = Variable 005 rayon * Variable 005 rayon
Soit
- Code:
-
x² = 25
Rayon = 5 ( soit le nombre de carreau )
distance = rayon²
distance = 25
On fait notre condition :
- Code:
-
Si Variable 001 coordonnéeXhero <= Variable 006 distance
Alors
L'event parle
fin de condition
Voilà c'est aussi tordu que simple x)
Bonne lecture et surtout prenez en de la graine
Note : J'ai dis n'avoir fait qu'une seul variable, car nous savons que 5*5 = 25
Donc autant rendre rayon directement = à 25 au lieu de multiplier le rayon par lui même pour obtenir la distance