CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[Flash] Moteur physique 2D LPengine

thebestprog
thebestprog
Niveau 5
15 septembre 2006 à 22:59:19

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 :ok:

LPTheKiller_2
LPTheKiller_2
Niveau 9
15 septembre 2006 à 23:18:57

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...

thebestprog
thebestprog
Niveau 5
16 septembre 2006 à 14:22:09

On attend …
Et bon courage

LPTheKiller_2
LPTheKiller_2
Niveau 9
22 septembre 2006 à 14:42:05

Et voilà quelques nouveaux objets :
Tout a été optimisé et débugué.
:d)
http://pierre.parreaux.free.fr/LPengine/Objets/PointLigneArti.swf
:d)
http://pierre.parreaux.free.fr/LPengine/Objets/Corde.swf
:d)
http://pierre.parreaux.free.fr/LPengine/Objets/PenduleFixe.swf
:d)
http://pierre.parreaux.free.fr/LPengine/Objets/PenduleCurseur.swf
:d)
http://pierre.parreaux.free.fr/LPengine/Objets/Hexagone_NonOptimise.swf

(Le dernier bug encore un peu...)

TNToon
TNToon
Niveau 9
22 septembre 2006 à 17:14:39

Tu progresses beaucoup !! Continues comme ça j´adore la corde et le pendule fixe :) .

thebestprog
thebestprog
Niveau 5
22 septembre 2006 à 22:02:11

lol

continue comme ca ,et ca sera la fète :ok:

LPTheKiller_2
LPTheKiller_2
Niveau 9
23 septembre 2006 à 13:27:56

Une corde entre deux points déplacables :
:d) Version avec beaucoup de points (rame) :
http://pierre.parreaux.free.fr/LPengine/Objets/CordeAttache.swf
:d) Version optimisée :
http://pierre.parreaux.free.fr/LPengine/Objets/CordeAttacheOpti.swf

TNToon
TNToon
Niveau 9
23 septembre 2006 à 16:32:31

J´adore ! N´oublies pas de me prévénir quand tu pourras rendre dispo tes sources.

LPTheKiller_2
LPTheKiller_2
Niveau 9
14 octobre 2006 à 22:44:41

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)

LPTheKiller_2
LPTheKiller_2
Niveau 9
16 octobre 2006 à 23:57:33

Voilà les mêmes liens employés pour des objets mécaniques.
http://pierre.parreaux.free.fr/LPengine/Objets/Ressorts.swf

LPTheKiller_2
LPTheKiller_2
Niveau 9
17 octobre 2006 à 13:19:40

La même chose mais avec un ressort plus beau et moins de bugs :
http://pierre.parreaux.free.fr/LPengine/Objets/RessortsOpti.swf

Fvirtman
Fvirtman
Niveau 10
17 octobre 2006 à 14:24:42

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 !

Fvirtman
Fvirtman
Niveau 10
17 octobre 2006 à 14:27:06

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 :-)

LPTheKiller_2
LPTheKiller_2
Niveau 9
18 octobre 2006 à 16:26:25

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.

LPTheKiller_2
LPTheKiller_2
Niveau 9
18 octobre 2006 à 16:29:39

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.

Fvirtman
Fvirtman
Niveau 10
18 octobre 2006 à 16:56:22

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 :-)

LPTheKiller_2
LPTheKiller_2
Niveau 9
18 octobre 2006 à 17:37:18

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 :)

Fvirtman
Fvirtman
Niveau 10
18 octobre 2006 à 17:49:58

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 :-)

OverSnow
OverSnow
Niveau 10
18 octobre 2006 à 18:15:30

Vraiment pas mal, j´aime bien les animations plustôt comique de ton site :-)))

fil_razorback
fil_razorback
Niveau 10
18 octobre 2006 à 18:19:34

JYY => Oui, à 16 ans on connait le produit scalaire pour peu qu´on soit soit en 1ere/terminale S ^^

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment