C’est pas mal
Je me demande qu’est ce que tu compte faire lorsque il s’agit
Des corps complexes (grandes cercles par exemple pas petite )
La le hittest ne marchera pas bien ca va dépasser les limites
regarde ce moteur sublime :
http://flash.media-box.net/index.php?act=Attach&type=post&id=30567
avec un peu de volenté ,je suis sur que
tu fera un truc semblable ![]()
En effet, c´est assez impressionnant...
Mais mon moteur physique est basé sur des points, non sur des foremes, et un point ne détecte la collision qu´en son centre.
Mais avec ces points, on peut construire des formes, et c´est sur ce point que je travaille en ce moment, après avoir résolu le problème de l´angle de rebond sur des sols inclinés.
Des exemples pour bientôt...
On attend …
Et bon courage
Et voilà quelques nouveaux objets :
Tout a été optimisé et débugué.
![]()
http://pierre.parreaux.free.fr/LPengine/Objets/PointLigneArti.swf
![]()
http://pierre.parreaux.free.fr/LPengine/Objets/Corde.swf
![]()
http://pierre.parreaux.free.fr/LPengine/Objets/PenduleFixe.swf
![]()
http://pierre.parreaux.free.fr/LPengine/Objets/PenduleCurseur.swf
![]()
http://pierre.parreaux.free.fr/LPengine/Objets/Hexagone_NonOptimise.swf
(Le dernier bug encore un peu...)
Tu progresses beaucoup !! Continues comme ça j´adore la corde et le pendule fixe
.
lol
continue comme ca ,et ca sera la fète ![]()
Une corde entre deux points déplacables :
Version avec beaucoup de points (rame) :
http://pierre.parreaux.free.fr/LPengine/Objets/CordeAttache.swf
Version optimisée :
http://pierre.parreaux.free.fr/LPengine/Objets/CordeAttacheOpti.swf
J´adore ! N´oublies pas de me prévénir quand tu pourras rendre dispo tes sources.
Voici les 3 types de liens sur lesquels se base LPengine :
http://pierre.parreaux.free.fr/LPengine/Objets/TYPES.swf
- Le lien rigide (de base)
- Le lien à longueur variable
- Le lien élastique (nouveau)
Voilà les mêmes liens employés pour des objets mécaniques.
http://pierre.parreaux.free.fr/LPengine/Objets/Ressorts.swf
La même chose mais avec un ressort plus beau et moins de bugs :
http://pierre.parreaux.free.fr/LPengine/Objets/RessortsOpti.swf
Je ne connais pas bien Flash.
Comment est ce que tu geres, par exemple, la gravité ?
Tu utilises des formules ?
Quelle formule ? F = ma ?
Comment geres tu les rebonds ? tu calcules un vecteur de rebond tel que la bissectrice avec le vecteur d´arrivée soit la normale du sol, en l´atténuant ?
Le niveau technique m´intéresse pas mal !
Ton topic me fait poser pas mal de questions, qui sortent du contexte de ce topic, je vais donc en créer un nouveau, qui parlera de théorie des moteurs physiques ![]()
Déjà ce moteur physique est composé de points.
Ils sont indépendants entre eux. Ils sont tous soumis à la gravité, c´est à dire que à chaque image leur vitesse Y est augmentée de la valeur de la variable _gravite.
Après les points sont soumis à des contraintes, les liens.
Si un point s´éloigne du point auquel il est lié, les deux points sont automatiquement rapproché, et leurs vitessent sont modifiées.
Pour les rebonds, j´ajoute au vecteur vitesse du point le vecteur qui a pour direction l´inclinaison du sol et pour norme la vitesse du point. Je convertis en vitesse X et Y grâce à la trigonométrie, puis j´ajuste ça pour que la nouvelle vitesse soit égale à la vitesse d´avant la collision et je multiplie par l´élasticité du sol.
Enfin en gros c´est ça
Après y´a plein d´autres trucs : les articulations, les articulations à limites d´angle, les liens à longueur variable et les liens élastiques etc.
Et bien, pour 16 ans, tu te défends tres bien ![]()
(si j´en crois ta carte de visite)
Ce que tu appelles "l´inclinaison du sol", en gros, c´est un vecteur perpendiculaire au sol, tu veux dire ? Autrement dit la Normale au sol ?
C´est comme suit que tu as fait en somme non ? :
Regarde ce dessin :
http://img192.imageshack.us/img192/1518/normalexo6.th.png
J´ai dessiné plusieurs sols en violet clair.
En rouge, je dessine des vecteurs "normale", au sol, au point d´impact donné.
Pour le rebond, regarde le dessin de gauche, le vecteur incident est le vert clair, le vecteur de rebond est le bleu, de telle sorte que la normale soit bissectrice.
A partir de la, tu peux calculer un rebond a partir de n´importe quel type de sol (meme cabossé) a partir du moment ou tu sais calculer la normale au point de rebond
Et ça marche meme en 3D ![]()
Ouais au final ça donne ça.
En fait à la base j´ai fait une fonction chargée de détecter l´inclinaison du sol en testant des collisions, mais comme ça bouffait plein de performances et que flash est très limité sur ce point là, j´ai décidé de faire des objets sols séparés qui sont en fait des rectangles avec deux parties : Le dessus et le dessous (voir screen)
http://img242.imageshack.us/img242/5103/solsf0.jpg
Si le point touche le "dessus", la direction du vecteur ajouté est égale à l´angle du sol en degrés -90 et si le point touche le "dessous" c´est égal à l´angle +90.
Car le point ne peut pas deviner s´il touche, par exemple, le sol ou le plafond, donc s´il doit rebondir vers le haut ou vers le bas.
De plus, un truc délicat c´est de "remonter" le point. En effet, à l´image 1 (voir schema 2) le point ne touche pas le sol et à l´image 2 il est en plein dedans. Il faut savoir la direction dans laquelle le point doit être déplacé pour ne plus être "dans" le sol.
http://img242.imageshack.k.us/img242/5821/toucheqt7.jpg
Avant j´enregistrais la position précédente du point et dès qu´il touchait le sol, je le faisait "reculer" dans cette direction jusqu´à ce qu´il ne touche plus. Maintenan j´utilise le "dessus" et le "dessous" du sol, c´est plus simple et moins bugué.
PS : J´ai bien 16 ans ![]()
Astucieux cette méthode de découper les rectangles en deux pour savoir si on touche au dessus ou en dessous.
En effet, ceprobleme de "tabulation", ou on passe de "hors du sol" a "en plein dedans", et qui nécessite une correction, est tres connu.
La méthode la plus utilisée dans ce cas est de regarder le vecteur entre la position actuelle et la précédente : ce vecteur te donne la direction par laquelle le point est arrivé.
A partir de la, tu peux te débrouiller pour faire rebondir dans le bon sens. (avec un produit scalaire par exemple)
N´oublie pas un outil tres pratique : le produit scalaire (je ne sais pas si a 16 ans tu connais)
Le produit scalaire de 2 vecteurs est une opération tres rapide, et te permet de savoir tres vite si 2 vecteurs "se regardent" ou non.
Typiquement un exemple :
Soit un monstre dans l´espace : tu définis son vecteur "regard" R -> on dit que le monstre voit a 180°.
Soit MP le vecteur (player,Monstre)
Si MP.R > 0 -> le monstre te voit
Si MP.R < 0 -> le monstre ne te voit pas.
en tout cas, pour 16 ans, tu m´impressionnes ![]()
Vraiment pas mal, j´aime bien les animations plustôt comique de ton site ![]()
JYY => Oui, à 16 ans on connait le produit scalaire pour peu qu´on soit soit en 1ere/terminale S ^^