Publié : sam. 18/nov./2006 20:09
OK je regarde cela. Pour les instructions de limites, tu ajoute a chque fois
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.
Vue que ce petit bout de code m'a permis de soulaver un bug, il faut recharger
le modulePhysX...
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...