Voyons maintenant comment nous pouvons appliquer une force à nos cubes pour qu'il puissent sauter sur eux même Smiley Code: ; ------------------------------------------------------ ; Chargement des fichiers necessaires ; ------------------------------------------------------ Include "Inc_BlitzODE.bb" Include "Inc_Camera.bb" Include "Inc_LiGht.bb" ; ----------------------------- ; Ouverture de l'ecran ; ----------------------------- Graphics3D 800, 600,32,2 SetBuffer BackBuffer() ; ---------------------------------------------- ; Initialisation camera et lumières ; ---------------------------------------------- Proc_CreateCamera() Proc_CreateLiGht() ; ---------------------- ; Creation du sol ; ---------------------- Plane = CreatePlane() EntityColor Plane, 100,100, 100 ; ------------------------------ ; Initialisation de ODE ; ------------------------------ Global ODE_Plane = True Global ODE_World = ODE_dWorldCreate(ODE_Plane ) ODE_dSetContactMode(dContactBounce + dContactSoftERP + dContactSoftCFM) ODE_dSetBOUNCE(0.1) ODE_dSetSOFT_ERP(1.5) ; Essayez 6.5 pour avoir un sol super rebondissant ODE_dSetSOFT_CFM(0.1) ; Essayez 3.2 pour rendre le sol moue (pour des effets d'eau par exemple) ; ----------------------------------------- ; Creation de plusieurs cubes ; ----------------------------------------- ZoneDiffusion=35 For I=1 To 150 Proc_CreateODECube(Rnd(-ZoneDiffusion,ZoneDiffusion),20,Rnd(-ZoneDiffusion,ZoneDiffusion),45,45,45,3,3,3,Rnd(1,15),Rnd(255),Rnd(255),Rnd(255)) Next ; ------------------------- ; Boucle principale ; ------------------------- While Not KeyHit(1) ; ------------------------------------------------- ; Rafraichissement du monde ODE ; ------------------------------------------------- ODE_dWorldQuickStep 0.1 ODE_UpdateGeoms() ; -------------------------------------------------------------------------------------------------------------------------------------------------- ; Cliquez lentement sur la souris pour appliquer une force aleatoire vers le haut ! devinez pour X et Z .... ; -------------------------------------------------------------------------------------------------------------------------------------------------- If MouseHit(1) Then Proc_AddForce(0,Rnd(80,100),0) EndIf UpdateWorld RenderWorld ; ------------------------ ; Camera freelook ; ------------------------ Proc_Freelook(Camera_Ent,1.2,0.05) Flip Wend ODE_dCloseODE() End ; -------------------------------------------- ; Permet de créer un cube ODE ; -------------------------------------------- Function Proc_CreateODECube(Px#,Py#,Pz#,Rx#,Ry#,Rz#,Sx#,Sy#,Sz#,Mass#,Red,Green,Blue) G.TODEGeom = New TODEGeom Gbody = ODE_dBodyCreate() GGeom = ODE_dCreateBox(ODE_World,Sx#,Sy#,Sz#,Mass#) ODE_dGeomSetBody GGeom, Gbody ODE_dBodySetPosition(Gbody, Px#,Py#,Pz#) ODE_dBodySetRotation(Gbody, Rx#,Ry#,Rz#) Gmesh = CreateCube() EntityColor Gmesh, Red,Green,Blue EntityShininess Gmesh, 0.7 ODE_UpdateGeoms() End Function ; -------------------------------------------------------------------------- ; Applique une force sur tout les objets RIGID BODY ; -------------------------------------------------------------------------- Function Proc_AddForce(Fx#,Fy#,Fz#) For g.TODEGeom = Each TODEGeom ODE_dBodyAddForce(Gbody, Fx#,Fy#,Fz#) Next End Function Journalisée "Je crois au moment. S'il n'y a pas le moment, à ce moment-là, il faut arriver à ce moment-là, au moment qu'on veut." JC Vandamme "En 1 semaine, t'as réussit à pourrir quasiment tous les topics et en déterrer des tellement vieux, que même un nécrophile y mettrait pas sa bite." Wako