Source: Scratch Wiki en français
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)))))
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
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
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) !