[Résolu]Valeur aléatoire stockée dans une variable d'objet

Bonjour à tous,

Me voici aujourd’hui avec un problème concernant une valeur aléatoire stockée dans une variable d’objet. Comme vous pouvez le voir sur la première capture, mon objectif est de placer 2 curseurs sur une barre et de les mettre en mouvement au moyen d’une variable d’objet qui contient une composante aléatoire (leur faire faire la course, si vous préférez, sans que l’on puisse prévoir à l’avance lequel des deux arrivera le premier à l’autre extrémité de la barre).

[attachment=1]VitesseAleatoire1.JPG[/attachment]

J’ai donc créé 2 curseurs ; un premier (celui qui est vert), que j’ai nommé “CurseurVitesseAleatoire” (CVA) est un curseur qui se déplace de la façon que j’ai décrite, de telle sorte que la variable d’objet “VitesseCVA” soit égale à VAL(random[60]) + 20, autrement dit qu’elle soit comprise entre 20 et 80 pixels. Le second curseur (le bleu au dessous de la barre) s’appelle “CurseurTemoin” (CT), il se déplace à la vitesse fixe de 40 pixels (il me permet de comparer son comportement par rapport à celui qui se déplace à vitesse aléatoire).

Voici le code des événements sur lequel je travaille :

[attachment=0]VitesseAleatoire2.JPG[/attachment]

En fait, le problème, c’est que ce programme fonctionne à moitié, mais pas tout à fait comme je voudrais. Car mon CurseurVitesseAleatoire se déplace effectivement de manière aléatoire, mais sa vitesse varie à chaque instant… Or, je voudrais que mon curseur reste à vitesse constante une fois que celle-ci a été déterminée aléatoirement. J’espère que je suis assez clair pour me faire comprendre : je voudrais qu’une valeur aléatoire soit stockée dans ma variable d’objet “VitesseCVA”, puis que cette variable ne varie plus jusqu’à ce que le curseur soit arrivé à l’autre extrémité de ma barre. (Par exemple, si ma variable d’objet “VitesseCVA” est égale à 73 au moment où le curseur se met en mouvement, je voudrais qu’elle reste à 73 jusqu’à ce qu’elle atteigne l’autre extrémité de la barre).

Dans mon code, comme vous pouvez le constater, j’ai tenté d’ajouter des conditions du type “si l’objet est à l’arrêt”, en pensant que peut-être ma variable ne serait plus recalculée dès que mon curseur serait en déplacement, mais visiblement ça ne fonctionne pas : avec le débugger, je vois au contraire que la vitesse de mon curseur vert varie en permanence. Avez-vous une idée comment je pourrais faire ?

Tu as dû mettre des actions de force avec une dissipation de 0. Elles sont donc “détruites” à chaque fin de la boucle des évènements, et l’objet est considéré comme arrêté.

Pour résoudre le problème, passe tes deux dernières actions dans respectivement l’évènement 1 et 2, mais en mettant une dissipation de 1. Cette dissipation indiquera que la force devra perdurer dans le temps. Il ne faudra donc ne la créer qu’une seule fois, ce qui est le cas avec la condition “L’objet est l’arrêt” qui empechera de recréer plusieurs fois les forces.

Merci 4ian, ta solution fonctionne parfaitement. J’avais effectivement laissé la dissipation de mes forces à 0. Je leur ai donc assigné la valeur 1, j’ai fusionné mes 4 évenements en 2, et tout marche nickel :slight_smile: .

Quand on a la solution sous les yeux, ça paraît tellement logique. Mais face au problème, ce n’est parfois pas si évident… Comme quoi, la programmation, ce n’est pas seulement affaire de composer les événements adéquats, il faut encore les organiser correctement…

Encore une victoire pour 4ian ! :smiley:

C’est intéressant c’est pour quel jeu? :smiley: