Collistion des boules dans une sphère

cs_lalach Messages postés 21 Date d'inscription lundi 25 octobre 2010 Statut Membre Dernière intervention 21 décembre 2010 - 8 nov. 2010 à 14:40
dj_ouf Messages postés 221 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 6 septembre 2011 - 12 nov. 2010 à 12:11
Bonjour,

je reviens à vous pour m'aider dans la construction d'un scripte que j'ai déjà entamer sous cs4 en as2, je suis en train de faire une sphère dedans, il y aura des boules qui tournent avec des collisions entre elles.

Mon souci est la collision entre les boules à intérieure de la sphère !!!!!


//déclaration des variables  elles servirons pour la direction du mc_boule aprés colision

var coefX:Number = 1;
var coefY:Number =-1;

//créer un onEnterFrame pour écouter la direction de l'objet
this.mc_boule.onEnterFrame = function() {
deplacemc_boule();
};

//créer la fonction qui déplacera mc_boule
function deplacemc_boule() {
mc_boule._x += coefX;
mc_boule._y += coefY;
}
// utilisation de hitTest pout connaitre le moment ou mc_boule est en contact
//avec le clip "bord, le tout est placé dans un onEnterFrame ce qui permet d'utiliser

this.bord.onEnterFrame = function() {
// tester si il y a colision sur le bas ou a droite du clip "bord
if (this.hitTest(mc_boule._x+25, mc_boule._y+40, true) == false) {
coefX = -chiffreAleatoire();
coefY = -chiffreAleatoire();
}
// tester si il y a colision sur le bas ou a gauche du clip "bord
if (this.hitTest(mc_boule._x-0, mc_boule._y+60, true) == false) {
coefX = chiffreAleatoire();
coefY = -chiffreAleatoire();
}
// tester si il y a colision sur le haut ou a droite du clip "bord
if (this.hitTest(mc_boule._x+25, mc_boule._y-60, true) == false) {
coefX = -chiffreAleatoire();
coefY = chiffreAleatoire();
}
// tester si il y a colision sur le haut ou a gauche du clip "bord
if (this.hitTest(mc_boule._x-25, mc_boule._y-60, true) == false) {
coefX = chiffreAleatoire();
coefY = chiffreAleatoire();
}
};

//Enfin, nous créer une fonction qui a pour but de créer un chiffre aléatoire

function chiffreAleatoire() {
var chiffre:Number=(Math.floor(Math.random(123456789)*30));
if (chiffre >0) {
chiffre = 1;
}
// récupération du resultat
return chiffre;
}




merci pour votre aide

3 réponses

dj_ouf Messages postés 221 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 6 septembre 2011
10 nov. 2010 à 16:01
Salut,

A mon humble avis, utiliser la fonction hitTest pour les collisions avec des sphères est puéril.

La tu n'as pas trop le choix, pour avoir des collisions précises, il faut calculer, et même gérer les collisions entre les boules elles-même.

J'ai déjà des tutos sur ça, tu pourras trouver facilement sur le net.
0
cs_lalach Messages postés 21 Date d'inscription lundi 25 octobre 2010 Statut Membre Dernière intervention 21 décembre 2010
10 nov. 2010 à 23:15
Bonjour,

Merci d'avoir pris soin de me répondre, je sais que c'est un peu difficile, les calcules ce n'est pas mon point fort lol mais bon je ferai des efforts.

Sinon j'ai quand même un petit résultat, des boules qui se cognent dans la sphère certes ce n'est pas tellement précis mais c'est déjà ca.

Si tu as des tutos à me proposer, volontiers.

Merci
0
dj_ouf Messages postés 221 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 6 septembre 2011
12 nov. 2010 à 12:11
Re

en cherchant vite fait sur le net :

http://www.actionscript.org/resources/articles/146/1/Circle-Collisions/Page1.html


Ah j'ai retrouvé l'excellent tuto sur les collisions, peut-être un poil trop complexe... mais y'a toujours les sources.
http://www.flashxpress.net/ressources-flash/la-detection-de-collision/
0
Rejoignez-nous