Source: Scratch Wiki en français


Distance entre deux cordonnées


Ce tutoriel explique comment obtenir une distance entre deux cordonnées. Les idées de blocs proviennent d'Adacraft.
Suivez tout ce tuto et vous saurez réaliser un simulateur de système solaire !

Idée générale

Imaginez que vous voulez obtenir la distance entre deux clones. Sachant que le bloc distance de [ v] ne fonctionne pas avec les clones, comment faire ?
En plus de créer ce bloc, ce tutoriel vous permettra aussi de créer d'autres blocs, tel que s'orienter vers x:() y:()::motion.

Réalisation

définir distance entre (x1) (y1) (x2) (y2)
mettre [distance entre cordonnées v] à ([racine v] de ((((x1) - (x2)) * ((x1) - (x2))) + (((y1) - (y2)) * ((y1) - (y2)))))
Attention
 Attention :
L'ordre des blocs est vraiment important ! Le script peut paraître lourd mais il est plus simple si vous comprenez qu'il s'agit du Théorème de Pythagore !

Vous avez maintenant un script permettant de trouver une distance entre deux points.

Projet d'exemple

Attention, le projet est en Anglais, et il montre deux possibilités (les blocs de mouvement) réalisables avec ce bloc personnalisé.

Bloc s'orienter vers x:() y:()

Comme montré dans le projet ci-dessus, on peut créer le bloc s'orienter vers x:() y:()::motion grâce à ce bloc. Voici comment faire :


définir S'orienter vers (x) (y) (x2) (y2)
distance entre (x) (y) (x2) (y2)::custom
mettre [angle v] à ([atan v] de (([abs v] de ((depuis x) - (vers x))) / ([abs v] de ((depuis y) - (vers y)))
si <<(depuis x) > (vers x)> et <(depuis y) > (vers y)>> alors {
S'orienter à (0)
@turnRight tourner de (angle)::motion
} sinon {
si <<(depuis x) > (vers x)> et <(depuis y) < (vers y)>> alors {
S'orienter à (180)
@turnLeft tourner de (angle)::motion
} sinon {
si <<(depuis x) < (vers x)> et <(depuis y) < (vers y)>> alors {
S'orienter à (180)
@turnRight tourner de (angle)::motion
} sinon {
S'orienter à (0)
@turnLeft tourner de (angle)::motion
}::control
}::control
}::control
Attention
 Attention :
Encore une fois, faites bien attention à l'ordre des blocs ! Il s'agit cette fois de trigonométrie !

Bloc tourner de () autour de x:() y:()

Dernière épreuve pour créer un projet de simulation de système solaire !

définir Tourner de (vitesse) autour de x:(x) y:(y)
S'orienter vers (abscisse x) (ordonnée y) (position x) (position y)::custom
mettre [distance première v] à (distance entre cordonnées)
@turnLeft tourner de (90)::motion
avancer de (vitesse)::motion
S'orienter vers (abscisse x) (ordonnée y) (position x) (position y)::custom
avancer de ((distance entre cordonnées) - (distance première))::motion
Info
 Info :
Pourquoi utiliser une deuxième fois le bloc S'orienter vers (abscisse x) (ordonnée y) (position x) (position y)::custom ? Pour effacer le gain de distance obtenu lors de l'avancement du sprite, qui éloignerai l'objet petit à petit... et finirai par faire sortir de la scène votre sprite.

Voilà ! Vous avez fini un des plus longs tutos du wiki, soyez-en fier(ère) !

Cet article fait partie de la catégorie des tutos
Tous les articles de cette catégorie :