AccueilAccueil  FAQFAQ  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  Connexion  
Le Deal du moment :
Jeux, jouets et Lego : le deuxième à ...
Voir le deal
-21%
Le deal à ne pas rater :
LEGO® Icons 10329 Les Plantes Miniatures, Collection Botanique
39.59 € 49.99 €
Voir le deal

 

 Faire orbiter un objet autour d'un point

Aller en bas 
5 participants
AuteurMessage
Asu
Utilisateur confirmé: Rang ****
Asu


Messages : 895

Faire orbiter un objet autour d'un point Empty
MessageSujet: Faire orbiter un objet autour d'un point   Faire orbiter un objet autour d'un point EmptyDim 8 Juin 2014 - 8: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 ***
chopsuey


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
...

Faire orbiter un objet autour d'un point Empty
MessageSujet: Re: Faire orbiter un objet autour d'un point   Faire orbiter un objet autour d'un point EmptyDim 8 Juin 2014 - 11: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 *****
D-z


Messages : 1611
Localisation : Montpellier

Faire orbiter un objet autour d'un point Empty
MessageSujet: Re: Faire orbiter un objet autour d'un point   Faire orbiter un objet autour d'un point EmptyDim 8 Juin 2014 - 11: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 *****
glcraft


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

Faire orbiter un objet autour d'un point Empty
MessageSujet: Re: Faire orbiter un objet autour d'un point   Faire orbiter un objet autour d'un point EmptyLun 9 Juin 2014 - 22: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
GrandeLangue


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

Faire orbiter un objet autour d'un point Empty
MessageSujet: Re: Faire orbiter un objet autour d'un point   Faire orbiter un objet autour d'un point EmptyLun 9 Juin 2014 - 23: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: https://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 : https://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é





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

Revenir en haut Aller en bas
 
Faire orbiter un objet autour d'un point
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» comment faire pour q'un objet tourne autour du personnage
» [script] => Trajectoire Circulaire autour d'un point
» gravitation autour d'un objet
» Créer une instance autour d'un objet
» Faire tourner des objets autour d'un autre

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