Page 1 sur 1

Physique dans les jeux (PB 4.60)

Publié : jeu. 13/oct./2011 18:27
par falsam
Je me demande si la gestion du Physics fonctionne correctement. A moins que ce soit moi qui ne le code pas correctement.

Pour illustrer mon problème, je joint un fichier (zip) qui contient un code ainsi que les textures associés.

:arrow: Test3D.zip

-Ce code montre 10 cubes qui tombent d'une hauteur de 6 metres. Tout va bien, ils rebondissent bien.

-J'ai crée un avatar représenté par un cube que vous pouvez déplacer avec les flèches du clavier.
Cet avatar est capable de percuter les cubes mais mon soucis est que si j'attend trop, les cubes deviennent fantômes (On passe à travers).

-EnableWorldPhysics(#True) fonctionne il vraiment ? présent ou pas les collisions fonctionnent.

Les conditions de test :
-Avant que les cubes qui tombent soit stables, déplacez votre avatar pour aller bousculer ces cubes.

-Relancez votre code et attendez que les cubes soient complètement stabilisés avant d'aller les bousculer. Ils sont devenu fantômes.

- Commentez EnableWorldPhysics(#True) et vous verrez que ça ne change rien à l’exécution du code.


Le code est à compiler avec la version 4.60 RC1 de PureBasic. Pour sortir du programme touche Esc

Re: Physique dans les jeux (PB 4.60)

Publié : jeu. 13/oct./2011 20:59
par Cool Dji
Hello Falsam,

Je ne sais plus lequel de nos camarades de jeux avait détecté cette anomalie dans les premières versions de la 4.6.
J'ai essayé de rechercher le topic mais pas trouvé (c'était pas kelebrindae ?)

Sinon, peux pas t'aider j'ai jamais essayé cette fonction 8O

Re: Physique dans les jeux (PB 4.60)

Publié : jeu. 13/oct./2011 21:37
par djes
Il faut regarder les rapports de bug sur le forum anglais. Celui-ci y figure.

Re: Physique dans les jeux (PB 4.60)

Publié : jeu. 13/oct./2011 22:00
par falsam
Merci Cool Dji et djes. C'est effectivement un bug que Comtois signale dans la section bug window du forum anglais. (lien)

Voila qui explique peut être pourquoi le code si dessous ne fonctionne pas correctement.

Code : Tout sélectionner

EnableExplicit

Enumeration 10
  #Camera
  #Light
  
  #Cube
  #Cube_Mesh
  #Cube_Texture
  #Cube_Material
  
  #Cylindre
  #Cylindre_Mesh
  #Cylindre_Texture
  #Cylindre_Material
  
  #Sphere
  #Sphere_Mesh
  #Sphere_Texture
  #Sphere_Material
  
  #Ground
  #Ground_Mesh
  #Ground_Texture
  #Ground_Material  
EndEnumeration


Global Entity.i, x.f, y.f, z.i, RotX.i, RotY.i, RotZ, i.f, Sense.s="Right"

InitSprite()
InitKeyboard()
InitMouse()
InitEngine3D()

OpenWindow(0,0,0,800,600,"3d",#PB_Window_ScreenCentered|#PB_Window_SystemMenu)
OpenWindowedScreen(WindowID(0),0,0,800,600,0,0,0)

WorldShadows(#PB_Shadow_Additive)

EnableWorldPhysics(#True) 

CreateCamera(#Camera,0,0,800,600)
CameraLocate(#Camera,5,5,-20)
CameraLookAt(#Camera,5,5,0)
CreateLight(#Light,RGB(255,255,255),0,50,-20)

CreateCylinder(#Cylindre_Mesh, 1, 5) 
CreateEntity(#Cylindre, MeshID(#Cylindre_Mesh), #PB_Material_None)
EntityLocate(#Cylindre, 1, 1,0)
RotateEntity(#Cylindre, 90, 0, 90)

CreateCube(#Cube_Mesh, 1)
CreateEntity(#Cube, MeshID(#cube_Mesh), #PB_Material_None)
ResizeEntity(#Cube, 15, 0.2, 5)
EntityLocate(#Cube, 1, 2.2, 0)
RotateEntity(#Cube, 0, 0, -18)
EntityPhysicBody(#Cube, #PB_Entity_StaticBody, 2, 0, 0)

CreateSphere(#Sphere_Mesh, 1) 
CreateEntity(#Sphere, MeshID(#Sphere_Mesh), #PB_Material_None)
EntityLocate(#Sphere, -1, 6,0)
EntityPhysicBody(#Sphere, #PB_Entity_BoxBody, 1, 0, 1)

CreateCube(#Ground_Mesh, 20)
CreateEntity(#Ground,MeshID(#Ground_Mesh), #PB_Material_None)
EntityLocate(#Ground,5,-10,-5)
EntityPhysicBody(#Ground, #PB_Entity_StaticBody, 1, 0, 0)

Repeat
  Delay(1)
  RenderWorld()
  
  ;Balançoire
  If i<18 And Sense="Right"
    i + 0.3
  Else
    Sense="Left"
  EndIf
  
  
  If i>-18 And Sense="Left"
    i - 0.3
  Else
    Sense="Right"
  EndIf
  RotateEntity(#Cube, 0, 0, i)
   
  If ExamineMouse()
    RotY = -MouseDeltaX()/10 
    RotX = -MouseDeltaY()/10  
  EndIf
       
  RotateCamera(#Camera, RotX, RotY, RotZ, #PB_Relative)
  
  FlipBuffers()
  
  ExamineKeyboard() 
  If KeyboardPushed(#PB_Key_Escape)
    End
  EndIf
  
ForEver
 

Re: Physique dans les jeux (PB 4.60)

Publié : ven. 14/oct./2011 6:53
par Cool Dji
Yep,

La 4.6 finalisée sera un petit pas pour l'homme, un bond de géant pour la communauté...

Re: Physique dans les jeux (PB 4.60)

Publié : ven. 14/oct./2011 8:23
par falsam
so wait and see :)

Re: Physique dans les jeux (PB 4.60)

Publié : ven. 14/oct./2011 9:32
par Cool Dji
J'attends de tester ces fonctions et de voir les possibilités.
Pour l'instant, je procède à des tests maisons mais je vois mes limites en physique...