Forum de discussion
Forum « Flash et Shockwave » (archives)
à l'aide!!
Envoyé: 3 août 2003, 16h44 par jeux_en_stock
-J'ai une occurence de personnage sur la scène que j'ai appelé "billy"
-j'utilise 8 points de collisions stockés dans un tableau nommé "hitPoints". Les voicis:
hitPoints = new Array();
hitPoints.push({x:-13, y:-20});
hitPoints.push({x:0, y:-20});
hitPoints.push({x:13, y:-20});
hitPoints.push({x:13, y:-1.25});
hitPoints.push({x:13, y:17.5});
hitPoints.push({x:0, y:17.5});
hitPoints.push({x:-13, y:17.5});
hitPoints.push({x:-13, y:-1.25});
-les murs et planchés sont tous dans une occurence que j'ai appelé "murs"
Voici mon code:
function main(){
//premièrement, j'appèle la fonction qui détecte
//les touches au clavier
detectionTouches("billy");
//on atténue les déplacements latéraux
//pour que billy ralentisse plus lentement
atténuation("billy");
//on ajoute la gravitée à dy
gravitée("billy");
//détections des collisions
detectCollision("billy");
/*******************************************
les quatres dernières fonctions appelées
s'occupent d'ajuster les variables dx et dy
*******************************************/
//on déplace le personnage par dx et dy
déplacementPersonnage("billy");
}
//fonction principale pour les collisions
function detectCollision(cible){
for(i = 0; i < hitPoints.length; i++){
x = hitPoints[i].x + _root[cible]._x;
y = hitPoints[i].y + _root[cible]._y;
detectX(cible, x, y);
detectY(cible, x, y);
}
}
//Détections sur l'axe des X
function detectX(cible, x, y){
chiffre = _root[cible].dx;
while((mur.hitTest(x + _root[cible].dx, y, true)) and (_root[cible].dx != 0)){
_root[cible].dx -= chiffre / Math.abs(chiffre);
}
}
//Détections sur l'axe des Y
function detectY(cible, x, y){
//Cette portion de code sert à savoir si c'est possible
//que le personnage se soit posé
_root[cible].landed = false;
if(_root[cible].dy > 0){
possible = true;
} else if(_root[cible].dy < 0){
possible = false;
}
chiffre = _root[cible].dy;
while((mur.hitTest(x, y + _root[cible].dy, true)) and (_root[cible].dy != 0)){
_root[cible].dy -= chiffre / Math.abs(chiffre);
}
//cette portion de code sert à dire si le personnage est
//posé sur le planché
if((_root[cible].dy == 0) and (possible)){
_root[cible].landed = true;
}
}
s'il manque quelque chose qui pourrait aider à résoudre le problème, dites le moi.
tout fonctionne à merveille... sauf,
les coins.
Cela fait plus de trois jours que je cherche c'est quoi le problème...
Aux secours!!!
Réponses
|