une borne a la limite. Dans le cas de LimitPlane, tu définis les deux limites.
Sinon, pour la trame voici le code, les media employés sont ceux du packPhysX.
Code : Tout sélectionner
; Fichiers Include
IncludePath "Include\"
IncludeFile "d3dx9.pbi"
IncludeFile "dreamotion3d.pbi"
IncludeFile "PhysX.pbi"
; Globales
Global anglex.f, angley.f, flagXDown.w
Global mox.f, omx.f, moy.l, omy.l
Global *camera.CEntity
Global Dim *roue.CEntity(4)
Global *font.CFont
Global *caisse
; Initialisation des différents modules
If InitSprite() = 0 Or InitKeyboard() = 0 Or InitMouse() = 0
End
EndIf
; Initialise la fenêtre graphique
DM_Graphics3D(800, 600, 32, 0, 1)
; Charge une font
*font = DM_LoadFont("Arial",8 , 1)
DM_SetColorText (*font, 198,198,198,255)
DM_AmbiantLight(150, 150, 150)
SetCurrentDirectory("media/")
;---------------------------------
; INIT DU MOTEUR PHYSIQUE
;---------------------------------
NX_Init(*DM_d3dDev9)
;--------------------------------------------------------------
; PETITE LIGHT HISTOIRE DE ...
;--------------------------------------------------------------
*light = DM_CreateLight(2, #Null)
DM_LightRange(*light ,150)
DM_LightAttenuation(*light, 1.0, 0.0, 0.0)
DM_TranslateEntity(*light, 0,40,0)
;--------------------------------------------------------------
; set ground
;--------------------------------------------------------------
*ter = DM_LoadEntity("land3.x", #Null, #False)
DM_TranslateEntity(*ter, 0,20,0)
NX_CreateStaticElement(*ter,10, 0)
*caisse = DM_CreateCube()
DM_ScaleMesh(*caisse, 5, 2, 8)
NX_CreatePhysicBox(*caisse, 0,0,0, 1.0,0)
For i = 0 To 3
*roue(i) = DM_CreateCylinder(16)
DM_ScaleMesh(*roue(i), 2,2,0.25)
DM_RotateMesh(*roue(i), 0,90,0)
Next
DM_TranslateEntity(*roue(0), 7,0,7) : NX_CreatePhysicMesh(*roue(0), 1,0)
DM_TranslateEntity(*roue(1), 7,0,-7): NX_CreatePhysicMesh(*roue(1), 1,0)
DM_TranslateEntity(*roue(2), -7,0,7): NX_CreatePhysicMesh(*roue(2), 1,0)
DM_TranslateEntity(*roue(3), -7,0,-7): NX_CreatePhysicMesh(*roue(3), 1,0)
;---------------------------------------
; Gestion des caméras
; ---------------------------------------
*camera = DM_CreateCamera(#Null)
DM_MoveEntity(*camera, -9,25, 37)
DM_TurnEntity(*camera, 30,170, 0)
DM_CameraClsColor(*camera, 25, 25, 25)
; ---------------------------------------
; Boucle principale
; ---------------------------------------
; si plein ecran, permet d'avoir la fleche
;change_curseur( #IDC_ARROW )
Repeat
ExamineKeyboard()
ExamineMouse()
ShowCursor_(1)
If KeyboardReleased(#PB_Key_Escape) Or WindowEvent()=#PB_Event_CloseWindow
Quit=1
EndIf
If KeyboardPushed(#PB_Key_U)
NX_EntityAddForce(*roue(0), 0,0,10)
EndIf
; Gestion de la caméra
If KeyboardPushed(#PB_Key_Up)
DM_MoveEntity(*camera, 0,0,4)
ElseIf KeyboardPushed(#PB_Key_Down)
DM_MoveEntity(*camera, 0,0,-4)
EndIf
If MouseButton(#PB_MouseButton_Left)
If flagXdown=0
omx = MouseX()
omy = MouseY()
flagXDown=11
Else
moy = MouseY()-omy
angley=(moy/5.0)
omy= MouseY()
mox = MouseX()-omx
anglex=(mox/5.0)
omx= MouseX()
DM_TurnEntity(*camera, angley,anglex,0)
EndIf
Else
flagXDown=0
EndIf
; ---------------
; Rendu
; ---------------
; mise a jour de la physique
NX_Update()
DM_BeginScene()
DM_RenderWorld()
DM_EndScene()
Until Quit=1
NX_Exit()
DM_ClearGraphics()
End
le modulePhysX...