OVH Cloud OVH Cloud

Un sharedball mais avec prise en charge de la physique

2 réponses
Avatar
Robusei
Grand bonjour,

Premier topic, premier post ;) et premier soucis aussi.
Voil?, allons y franchement, je cherche ? reproduire l'application com_server
(samples/sharedball) mais en y ajoutant la physique. C'est ? dire que les
mouvement de la ball r?pondraient ? l'inertie, la gravit? (et la friction?).
On trouve beaucoup d'exemples en flash simple mais aucun en flash com_server et
il faut dire qu'en plus d'?tre press? par le temps... je ne suis pas tr?s
expert. Peut ?tre pouriez vous m'aider, c'est tr?s important pour moi et vous
?tes un peu mon dernier recours, n'ayant rien su trouver en fouillant moi-m?me
la communaut? flash.. Le plus viiite est le mieux, merci mille fois.

Bonne journ?e! ;)

2 réponses

Avatar
Robusei
Voici ce que j'ai trouv? mais ce n'est pas du Com_server


Originally posted by: Robusei
Gravit?

Ce tutoriel vous explique comment simuler diverses forces gravitationnelles
sur un objet dans une animation Flash. J?ai r?alis? ce tutoriel pour le
b?n?fice de la communaut? de la programmation Flash. N?h?sitez donc pas ? le
diffuser. Je vous demande juste de conserver ce document dans sa forme
originelle. Si vous d?sirez y ajouter quelque chose, placez vos commentaires ou
ajouts ? la fin du document, avec votre nom, adresse e-mail et envoyez moi une
copie.
J?ai ?cris ce tutoriel en plusieurs ?tapes, chaque ?tape aboutissant sur une
animation qui fonctionne. Chaque nouvelle ?tape apporte des caract?ristiques
suppl?mentaires par rapport ? l??tape pr?c?dente. C?est de cette mani?re que
j?ai tout d?abord construit le fichier, obtenant une chose qui fonctionne,
puis, en ajoutant par petites touches...

Le tutoriel se pr?sente ainsi :

A. Cr?er un objet et le faire bouger dans une direction (ex. horizontale).

B. Le faire rebondir sur un c?t? de l??cran, puis sur deux c?t?s.

C. Puis, le faire bouger aussi bien verticalement qu?horizontalement, et le
faire rebondir sur tous les c?t?s de l??cran.

D. Ajouter la gravit?.

E. Ajouter la friction.

F. Ajouter une intensit? de ?rebond? variable.

G. Permettre d?attraper la balle et de la lancer.

OK, allons-y :

A. CREER L?OBJET ET LE FAIRE BOUGER :
Nous allons donc juste cr?er l?objet et le faire bouger ? une vitesse
r?guli?re en utilisant uniquement l?actionscript.

1. Cr?er une nouvelle animation. Changez la couleur de fond de l?animation et
mettez la couleur de fond en noir. R?glez le nombre d?images par seconde ? 20.
Cela permettra de rendre l?animation un peu plus lisse. Vous pouvez laisser la
taille de l?animation sur 550 X 400.

2. Dessinez un cercle, s?lectionnez-le, et transformez le en clip.

3. Double cliquez sur le clip cr?? pour l??diter.

4. Renommez le calque en ?balle?.

5. Cr?ez un nouveau calque, que vous appellerez ?actions?.

6. Mettez trois images cl?s dans le calque ?actions?, en vous assurant que le
calque ?balle? s??tend bien sur 3 images.

7. La premi?re image cl? va initialiser l?objet. S?lectionnez-la, allez dans
le panneau d?actions et tapez le code suivant (Je vous recommende de vous
mettre en mode expert):

_x;
_y 0;
xspeed=5;
Il est facile de comprendre que ces instructions positionnent l?objet aux
coordonn?es 10,200 et lui assignent une vitesse de ?5? . Cette ?tape pourrait
?galement ?tre r?alis?e avec l?action onClipEvent(load) appliqu?e ? l?objet lui
m?me, mais pour plus de clart?, j?ai gard? tout le code sur ce sc?nario.

8. Maintenant, s?lectionnez la seconde image du calque ?actions? et saisissez
le code :

_x=_x+xspeed;

L? encore, c?est assez simple, ceci permet d?accro?tre la coordonn?e x de
l?objet de 5 en 5 (5 ?tant la valeur de xspeed).

9. Maintenant, allez ? l'image 3 et tapez l?action suivante :

gotoAndPlay(2);
Ceci va permettre au clip de boucler continuellement entre l?image 2 et 3,
changeant constamment la position de l?objet, selon la variable ?xspeed?.

10. Testez l?animation. La balle devrait bouger de gauche ? droite et sortir
de l??cran. Essayez de changer la variable xspeed et vous constaterez que la
balle bougera plus ou moins vite. Rien de tr?s excitant pour l?instant, mais
ceci est la base du reste de l?animation. Ca fonctionne comme nous l?esp?rons
et nous pouvons donc ajouter un autre morceau. Occupons-nous du ?rebond? de
cette balle.

B. FAIRE REBONDIR LA BALLE
Voir la balle sortir de l??cran n??tait pas tr?s excitant. Faisons-la donc
rebondir lorsqu?elle atteint l?extr?mit? de l??cran.

1. Nous devons tout d?abord savoir o? se situe l?extr?mit? et ?galement, quand
nous la touchons. Allez donc dans notre clip, ? l?image 1 du calque ?actions?,
l? o? nous initialisons tout, et ajoutez la ligne suivante :

rightedgeU0;
Ceci repr?sente la largeur par d?faut d?une animation flash, et nous voulons
que la balle rebondisse lorsqu?elle l?atteint.

2. Maintenant que nous savons o? se situe l?extr?mit?, nous devons savoir
lorsque nous la touchons. Allez ? l?image 2, l? o? nous bougeons la balle.
Apr?s avoir ajout? la vitesse ? la position de la balle, nous devons savoir si
nous avons franchi l?extr?mit? droite. Si tel est le cas, nous replacerons la
balle sur l?extr?mit? droite. D?s lors, nous changerons la direction de son
d?placement. Rajoutez ce code :

if(_x+_width/2>rightedge) {
_x=rightedge-_width/2;
xspeed=-xspeed;
}



Qu?est ce que ?_width/2?? Rappelez vous que la position _x de votre objet est
le centre de votre objet. Si vous la placez ? l?extr?mit? de votre ?cran, la
balle sera ? moiti? en dehors de l??cran. Il suffit donc de prendre la moiti?
de la largeur (la propri?t? _width) puis de l?ajouter ou la soustraire de la
position.

A la premi?re ligne, vous v?rifiez si le bord droit de votre objet
(x+_width/2) d?passe le bord droit de votre ?cran. Si tel est le cas, vous
placez le bord droit SUR le bord droit de l??cran. Ainsi, on a l?impression que
ca touche le bord de l??cran. Ce n?est probablement pas la mani?re la plus
pr?cise pour positionner l?objet au point d?impact, particuli?rement dans un
rep?re ? deux dimensions, mais ?a a le m?rite d??tre simple et de donner un
joli r?sultat.

La derni?re ligne fait varier la vitesse d?un montant positif ? un montant
n?gatif, ce qui a pour effet de changer la position de la balle. (Comme nous
allons le voir prochainement, cette ligne va ?galement faire varier la vitesse
de positif ? n?gatif lorsque la balle touche le mur oppos?).

3. Testez l?animation. La balle devrait toucher le c?t? droit de l??cran et
rebondir. Ce n?est pas encore tr?s captivant mais on s?en approche. Maintenant,
faisons-l? rebondir sur le bord gauche.

4. Ajoutez la ligne suivante l'image d?initialisation, dans les actions de
l?image 1.

leftedge=0;

Je n?ai pas ? vous expliquer cette ligne.

5. Ajoutez ceci ? l?image 2 :

if(_x-_width/2<leftedge) {
_x=leftedge+_width/2;
xspeed=-xspeed;
}
C?est quasiment le m?me code que pour le bord droit , on teste si la balle a
franchi le bord gauche, et si tel est le cas, on la place sur le bord gauche et
on change la direction.

6. Testez de nouveau, la balle devrait rebondir sur les deux c?t?s de l??cran.
Ce n?est toujours pas tr?s r?aliste, mais nous avons maintenant une base solide
pour ajouter des modifications.

C.MOUVEMENT VERTICAL
Nous devons maintenant faire bouger la balle sur deux dimensions. Ce sera plus
facile que vous le pensez. Nous devons juste dupliquer ce que nous avons fait
jusqu?? pr?sent et l?appliquer ? la dimension ?y?.

1. Nous avons besoin d?une vitesse verticale. Allez ? l'image d?initialisation
(image 1) et tapez :

yspeed ;
Mettez ?galement xspeed ? 20 pour acc?l?rer un peu les choses.

2. Nous devons maintenant savoir o? se trouvent le haut et le bas de
l?animation au m?me titre que la gauche et la droite. Ajoutons donc :

topedge=0;
;
3. Allez maintenant ? l?image 2. Copiez tout le contenu des actions et placez
la copie juste en dessous du code existant. Effectuez les modifications
suivantes :

Changez _x par _y
Changez xspeed par yspeed
Changez leftedge par topedge
Changez rightedge par bottomedge
Changez _width par _height

Je d?teste dire cela, mais c?est tout pour cette ?tape ! Testez l?animation,
la balle doit bouger et rebondir sur tous les bords de l??cran. C?est presque
aussi r?aliste que le jeu de ?pong?, nous allons bient?t l?am?liorer dans les
prochaines ?tapes.

D. AJOUTER LA GRAVITE
Cette ?tape sera un long chemin pour rendre la balle plus r?aliste. Nous
devons tout d?abord savoir ce qu?est et ce qu?implique la gravit?. En pratique,
c?est une force qui attire les choses vers le bas. Par cons?quent, dans notre
animation, cela signifie qu?un morceau de code ajoute constamment une valeur
positive de ?y?. (Rappelez-vous que la valeur ?y? augmente plus vous vous
rapprochez du bas de l??cran). Si vous jetez un objet du haut d?un immeuble, sa
chute commencera ? une certaine vitesse (une valeur de ?y? positive), mais avec
la gravit? il va aller de plus en plus vite jusqu?? ce qu?il touche le sol. En
d?autres termes, yspeed va augmenter continuellement. Si vous jetez une balle
en l?air, vous lui donnez une vitesse ?y? n?gative. La gravit? va la tirer dans
une direction ?y? positive - ajouter une valeur ?y? positive - jusqu?? ce que
yspeed atteigne 0, alors, elle commence ? retomber, sa vitesse ?yspeed? devient
positive. Dans notre code, la gravit? est juste un nombre que nous ajoutons ?
?yspeed? ? chaque boucle. Encore une fois, ceci est assez simple.

1. Allez ? l?image 1 et mettez la valeur de ?gravity? ? 2 :

gravity=2;
2. Allez ? l?image 2 et rajoutez cette ligne ? la fin du code :

yspeed=yspeed+gravity;
3. Encore une fois, je d?teste le dire, mais c?est tout pour cette ?tape !
Testez l?animation , la balle doit rebondir et son mouvement doit sembler plus
r?aliste. Amusez-vous avec la gravit? et les r?glages de vitesse pour voir ce
qui se passe. A cette ?tape, cela ne ressemble pas ? Pong mais ? un match de
tennis entre deux opposants invisibles. La balle ne fait pas de pause, elle
rebondit perp?tuellement, c?est comme si elle ?tait frapp?e en permanence. Dans
le monde r?el, deux choses devraient la ralentir. La premi?re est la friction -
les mol?cules d?air ? travers lesquelles la balle passe devraient la ralentir.
L?autre est le fait qu?un objet qui rebondit, perd de la force quand il touche
le sol. Nous allons prendre en compte ces deux facteurs.

E. FRICTION
Si vous jetez une balle dans l?espace, elle devrait th?oriquement se d?placer
toujours ? la m?me vitesse. Rien ne la ralentirait. Ici sur terre, tous les
d?placements d?objet sont soumis ? la friction de l?air, l?eau ou tout autre
?l?ment travers?. Si vo
Avatar
saturnino
Bonjour,

L'idéal est de consulter les classes "vector", "Forces" et "physics
particle" de Robert penner.
http://www.robertpenner.com/

PS: que ce soit au sein de FCS ou pas, ça ne change rien.


--
Cordialement,
Saturnino
www.saturnino-freelance.com


"Robusei" a écrit dans le message de news:
da2sto$pe7$
Grand bonjour,

Premier topic, premier post ;) et premier soucis aussi.
Voil?, allons y franchement, je cherche ? reproduire l'application
com_server
(samples/sharedball) mais en y ajoutant la physique. C'est ? dire que les
mouvement de la ball r?pondraient ? l'inertie, la gravit? (et la
friction?).
On trouve beaucoup d'exemples en flash simple mais aucun en flash
com_server et
il faut dire qu'en plus d'?tre press? par le temps... je ne suis pas tr?s
expert. Peut ?tre pouriez vous m'aider, c'est tr?s important pour moi et
vous
?tes un peu mon dernier recours, n'ayant rien su trouver en fouillant
moi-m?me
la communaut? flash.. Le plus viiite est le mieux, merci mille fois.

Bonne journ?e! ;)