Je ne suis pas certain que ce soit un bug de PureBasic donc, avant de poster sur le forum anglais (que j'ai consulté sans rien trouver) j'aimerais votre avis.
Je créé une plaque avec 2 barres latérales que je colle dans un node.
Je balance des balles par dessus => les collisions fonctionnent bien.
Mais lorsque le node rotate (avec la touche espace), les balles semblent conserver la position initiale de l'entity pour les collisions et ne prennent pas en compte le nouvelle angle de la plaque...
Si on fait uniquement un rotateentity de la plaque seule, les balles suivaient bien le nouvel angle et tombaient en roulant...
Vous voyez de quoi ça peut venir ?
Merci
Code : Tout sélectionner
InitEngine3D()
InitKeyboard()
InitMouse()
InitSprite()
#CameraSpeed = 1
Define.f KeyX, KeyY
; Ouvre un écran
OpenScreen(1024,768,32,"X")
AntialiasingMode(#PB_AntialiasingMode_x6)
CreateTexture(0,512,512)
StartDrawing(TextureOutput(0))
Box(0,0,512,512,RGB(255,0,255))
Circle(256,256,80,RGB(0,255,0))
StopDrawing()
CreateMaterial(0,TextureID(0))
CreatePlane(0,100,100,100,100,10,10)
CreateEntity(1,MeshID(0),#PB_Material_None ,50,0,50)
EntityPhysicBody(1,#PB_Entity_StaticBody)
CreateCube(1,100)
CreateEntity(2,MeshID(1),#PB_Material_None ,50,5,0)
ScaleEntity(2,1,0.1,0.1)
EntityPhysicBody(2,#PB_Entity_StaticBody)
CreateEntity(3,MeshID(1),#PB_Material_None ,50,5,100)
ScaleEntity(3,1,0.1,0.1)
EntityPhysicBody(3,#PB_Entity_StaticBody)
CreateNode(0)
AttachNodeObject(0,EntityID(1))
AttachNodeObject(0,EntityID(2))
AttachNodeObject(0,EntityID(3))
CreateSphere(2,2)
For j=1 To 100
CreateEntity(j+100,MeshID(2),MaterialID(0),Random(100),50+Random(100),Random(100))
EntityPhysicBody(j+100,#PB_Entity_SphereBody,1,1,1)
Next
CreateCamera(0, 0, 0, 100, 100)
MoveCamera(0, 200, 50, 200,#PB_Absolute)
CameraLookAt(0, 10, 10, 10)
EnableWorldPhysics(1)
Repeat
If ExamineMouse()
MouseX = -MouseDeltaX() * #CameraSpeed * 0.05
MouseY = -MouseDeltaY() * #CameraSpeed * 0.05
EndIf
If ExamineKeyboard()
If KeyboardPushed(#PB_Key_Left)
KeyX = -#CameraSpeed
ElseIf KeyboardPushed(#PB_Key_Right)
KeyX = #CameraSpeed
Else
KeyX = 0
EndIf
If KeyboardPushed(#PB_Key_Up)
KeyY = -#CameraSpeed
ElseIf KeyboardPushed(#PB_Key_Down)
KeyY = #CameraSpeed
Else
KeyY = 0
EndIf
If KeyboardPushed(#PB_Key_Space)
RotateNode(0,0.1,0,0,#PB_Relative)
EndIf
EndIf
RotateCamera(0, MouseY, MouseX, 0, #PB_Relative)
MoveCamera (0, KeyX, 0, KeyY)
RenderWorld()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
End