AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  Connexion  

Partagez | 
 

 Faire orbiter un objet autour d'un point

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Asu
Utilisateur confirmé: Rang ****
avatar

Messages : 895

MessageSujet: Faire orbiter un objet autour d'un point   Dim 8 Juin 2014 - 6:58

Ce code (Pas réellement un script à proprement parler, mais peut être converti vers un script très simplement) permet de faire orbiter un objet autour d'un point. J'ai réussi à faire ça avec un peu de trigonométrie (sinus et cosinus), ce qui peut un peu vous aider à comprendre à quoi elle peut servir dans la programmation. (C'est d'ailleurs ce que j'ai voulu faire avec mes tests!) Il est vraiment simple de compréhension, il vous faudra juste un peu de tests pour comprendre l'utilité du sinus et du cosinus dans ce cas!

Dans l'event create de l'objet à faire orbiter
Code:
spos = 0; // On initialise la variable; ça ne sert à rien si vous avez coché 'Treat uninitialized variables as 0'.
Dans son event step
Code:
spos -= 0.02; // Une valeur négative fera aller votre objet dans le sens d'une aiguille d'une montre, l'inverse; eh bien l'inverse. Une valeur plus grande signifiera une plus grande vitesse.

x=xsuiv+sin(spos)*rayon;
y=ysuiv+cos(spos)*rayon;
xsuiv et ysuiv étant les coordonnées du point à suivre pour l'orbitation. Ce point peut évidemment référer aux coordonnées d'un autre objet, c'est très intéressent pour faire plusieurs orbitations!
rayon est l'éloignement de notre objet par rapport au point. En revanche, ça ne change en rien la vitesse! En effet, si vous avez un rayon de 10 et un autre de 1000, les deux mettront autant de temps pour faire un tour.

_________________
‎<‎Cysteine‎>‎ nON mais la touche maj s'active/se désactive toute seule
‎<‎Cysteine‎>‎ et a du mal à réponDRE QUANd j'appuie dessus
‎<‎Cysteine‎>‎ et je l'ai démont2? IL Ny a rien DEDANs
Revenir en haut Aller en bas
chopsuey
Utilisateur confirmé: Rang ***
avatar

Messages : 523
Localisation : saint etienne
Projet Actuel : All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
All work and no play makes Jack a dull boy
...

MessageSujet: Re: Faire orbiter un objet autour d'un point   Dim 8 Juin 2014 - 9:11

Bien joué Wink
J'y connais rien en trigo il faudrait que je m'y penche.
Sinon tu peux faire à peut près la même chose avec lengthdhir du genre:

direction=point_direction(x,y,obj_2.x,obj_2.y)
x+=lengthdir_x(vitesse,direction+90)
y+=lengthdir_y(vitesse,direction+90)

Mais le problème c'est que l'objet qui orbite dérive progressivement vers l’extérieur... j'ai jamais compris pourquoi.

_________________
Spoiler:
 
Revenir en haut Aller en bas
D-z
Utilisateur confirmé: Rang *****
avatar

Messages : 1608
Localisation : Montpellier

MessageSujet: Re: Faire orbiter un objet autour d'un point   Dim 8 Juin 2014 - 9:33

Parce que tu ne fais qu'incrémenter tes coordonnées et que les erreurs d'arrondi s'accumulent, et que ce que tu fais est un genre d'intégration d'Euler, donc imprécise.

_________________
 
Home is not a place, it's a feeling.
Revenir en haut Aller en bas
glcraft
Utilisateur confirmé: Rang *****
avatar

Messages : 1698
Localisation : Entre l'Espagne, l'Italie, la Suisse, L'allemagne et le RU :P
Projet Actuel : Jeu de survie avancé
||--------

MessageSujet: Re: Faire orbiter un objet autour d'un point   Lun 9 Juin 2014 - 20:52

en fait avec lengthdir,
Code:

x=xsuiv+sin(spos)*rayon;
y=ysuiv+cos(spos)*rayon;

deviens

Code:

x=xsuiv+lenghtdir_x(rayon,radtodeg(spos));
y=ysuiv+lengthdir_y(rayon,radtodeg(spos));

Apres ce que j'aurais bien voulu savoir c'est comment faire un orbite ellipsoïdal (donc en ellipse  awesome ) avec une vitesse réel, car la vitesse depends aussi de la distance de l'objet (ou des objets) qui s'attire entre eux !
Je vais faire une recherche, si je trouve je poste ici Wink
Revenir en haut Aller en bas
http://gameblog49.skyblog.com/
GrandeLangue
Bonne participation
avatar

Messages : 77
Localisation : Lille
Projet Actuel : Faire des maths

MessageSujet: Re: Faire orbiter un objet autour d'un point   Lun 9 Juin 2014 - 21:21

Utiliser lengthdir est plus clair et optimisé que d'utiliser cos/sin (et puis pourquoi faire de la trigonométrie quand Game Maker peut la faire pour vous? Razz)

Code:
angle += 1; // l'angle est en degrés
x = centre_x + lengthdir_x(rayon, angle);
y = centre_y + lengthdir_y(rayon, angle);

Il y a un magnifique tutoriel avec exercices à la clé de onilink sur le sujet: http://cbna.forumactif.com/t12332-atelier-gml-3-trigonometrie-utilisation-des-lengthdir

_________________
Un superbe jeu de plateforme où vous pouvez contrôler le temps ici : TimeBoy

Pour maîtriser les pistons dans Minecraft : http://www.youtube.com/MindcraftMax
Project Spark est mort, vive Project Spark ! Top 25 des créations qui ont été réalisées avec ce moteur de création de jeu depuis sa sortie, avant que les serveurs n'aient été arrêtés : https://www.youtube.com/watch?v=nPenVqIcFgc
Revenir en haut Aller en bas
Contenu sponsorisé




MessageSujet: Re: Faire orbiter un objet autour d'un point   

Revenir en haut Aller en bas
 
Faire orbiter un objet autour d'un point
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Faire orbiter un objet autour d'un point
» [script] => Trajectoire Circulaire autour d'un point
» Faire bouger un objet au passage de la souris [ RESOLU ]
» Faire ressortir un objet ou un visage d'une Photo rapide et simple
» [CSS] Comment faire des ombres tout autour du tableau

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Forum Le CBNA :: Développement :: Scripts GML-
Sauter vers: