MousePick()
Publié : mer. 26/sept./2012 15:17
Franchement, j'ai un peu de mal à comprendre ces procédures qui renvoient des valeurs dans des fonctions... Par exemple, dans ce code, quand on va vite ça ne fonctionne pas, parce que la souris ne touche plus aucun objet. Par contre, si je rajoute un fond, pas de souci, mais ça sautille, parce que le cube est testé ainsi que le plan si l'on déplace la souris trop vite.
Le code qui fonctionne est un peu plus bas 
Code : Tout sélectionner
InitEngine3D()
InitSprite()
OpenWindow(0,0,0,1024,768,"Mouse picking")
OpenWindowedScreen(WindowID(0),0,0,1024,768,1,0,0)
CreateCamera(0,0,0,100,100)
CameraLocate(0,100,100,100)
CameraLookAt(0,0,0,0)
CreateCube(1,10)
CreateEntity(1,MeshID(1),#PB_Material_None,0,5,0)
CreateLight(0,$FFFFFF,0,100,0)
;WorldShadows(#PB_Shadow_Modulative)
Repeat
event = WindowEvent()
MousePick(0, WindowMouseX(0), WindowMouseY(0))
EntityLocate(1,PickX(),5,PickZ())
ClearScreen(0)
RenderWorld()
FlipBuffers()
Until event = #PB_Event_CloseWindow
Code : Tout sélectionner
InitEngine3D()
InitSprite()
OpenWindow(0,0,0,1024,768,"Mouse picking")
OpenWindowedScreen(WindowID(0),0,0,1024,768,1,0,0)
CreateCamera(0,0,0,100,100)
CameraLocate(0,100,100,100)
CameraLookAt(0,0,0,0)
CreatePlane(0,1000,1000,1,1,1,1)
CreateEntity(0,MeshID(0),#PB_Material_None,0,0,0,1) ; <- Créer un material invisible ici !
CreateCube(1,10)
CreateEntity(1,MeshID(1),#PB_Material_None,0,5,0)
CreateLight(0,$FFFFFF,0,100,0)
;WorldShadows(#PB_Shadow_Modulative)
Repeat
event = WindowEvent()
MousePick(0, WindowMouseX(0), WindowMouseY(0))
EntityLocate(1,PickX(),5,PickZ())
ClearScreen(0)
RenderWorld()
FlipBuffers()
Until event = #PB_Event_CloseWindow
