Code: Select all
#CameraSpeed = 1
#Nb = 40
Define.f KeyX, KeyY, MouseX, MouseY
Dim Planche(#Nb)
If InitEngine3D()
InitSprite()
InitKeyboard()
InitMouse()
ExamineDesktops()
OpenScreen(DesktopWidth(0), DesktopHeight(0), DesktopDepth(0), "joint")
;-Pont
CreateCube(1, 1.0)
For i = 1 To #Nb
Planche(i)=CreateEntity(#PB_Any, MeshID(1), #PB_Material_None)
ScaleEntity(Planche(i), 2.8, 0.2, 20)
EntityLocate(Planche(i), i*3,0,0)
EntityPhysicBody(Planche(i), #PB_Entity_BoxBody, 1.0)
Next i
Pas.f = 1.5
PointJoint(Planche(1), -Pas, 0, -5)
For i= 1 To #Nb-2
PointJoint(Planche(i+1), -Pas, 0, -5, Planche(i), Pas, 0, -5)
Next i
PointJoint(Planche(#Nb), Pas, 0, -5)
PointJoint(Planche(#Nb-1), Pas, 0, -5, Planche(#Nb), -Pas, 0, -5)
PointJoint(Planche(1), -Pas, 0, 5)
For i= 1 To #Nb-2
PointJoint(Planche(i+1), -Pas, 0, 5, Planche(i), Pas, 0, 5)
Next i
PointJoint(Planche(#Nb), Pas, 0, 5)
PointJoint(Planche(#Nb-1), Pas, 0, 5, Planche(#Nb), -Pas, 0, 5)
;-Objets
CreateSphere(2, 2)
C = Planche(1)
For i = 1 To #Nb/2
Perso = CreateEntity(#PB_Any, MeshID(2), #PB_Material_None, EntityX(C) +i * 5, EntityY(C)+ i * 2, EntityZ(C))
EntityPhysicBody(Perso, #PB_Entity_SphereBody, 1.0)
Next i
For i = 1 To #Nb/2
Perso = CreateEntity(#PB_Any, MeshID(1), #PB_Material_None, EntityX(C) +i * 5, EntityY(C)+ i * 4, EntityZ(C))
ScaleEntity(Perso, 3, 3, 3)
EntityPhysicBody(Perso, #PB_Entity_BoxBody, 1.0)
Next i
;-Camera
CreateCamera(0, 0, 0, 100, 100)
CameraLocate(0, -20, 30, -40)
CameraLookAt(0, EntityX(C) + 25, EntityY(C) + 10, EntityZ(C))
;-Light
CreateLight(0, RGB(255, 255, 255))
AmbientColor(RGB(80, 80, 80))
;-Sprite
CreateSprite(0, 300, 60)
;-Main loop
Repeat
If ExamineKeyboard()
If KeyboardPushed(#PB_Key_Space)
ApplyEntityImpulse(Planche(#Nb/2), 0, -9, 0)
EndIf
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
EndIf
If ExamineMouse()
MouseX = -(MouseDeltaX()/10)*#CameraSpeed/2
MouseY = -(MouseDeltaY()/10)*#CameraSpeed/2
EndIf
MoveCamera (0, KeyX, 0, KeyY)
RotateCamera(0, MouseY, MouseX, 0)
RenderWorld()
StartDrawing(SpriteOutput(0))
DrawText(10,10, "FPS = " +Str(Engine3DFrameRate(#PB_Engine3D_Current)), $FFFF00, $FF0000)
StopDrawing()
DisplayTransparentSprite(0,0,0)
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
Else
MessageRequester("Error", "The 3D Engine can't be initialized",0)
EndIf
End


