Moi peter un cable
Publié : mer. 22/déc./2004 9:56
Testez ce code (a enregistrer dans le dossier des exemples)
Avec les touches A Z E R T Y, on peut modifier l'angle du robot. Amusez vous a modifier les angles dans tout les sens pendant quelques secondes, ensuite, remettez les angles à 0: le robot n'a plus la même orientation que l'orientation originale
je vois pas ou est le probleme
Avec les touches A Z E R T Y, on peut modifier l'angle du robot. Amusez vous a modifier les angles dans tout les sens pendant quelques secondes, ensuite, remettez les angles à 0: le robot n'a plus la même orientation que l'orientation originale
je vois pas ou est le probleme

Code : Tout sélectionner
IncludeFile "Screen3DRequester.pb"
DefType.f KeyX, KeyY, MouseX, MouseY
If InitEngine3D()
Add3DArchive("Data\" , #PB_3DArchive_FileSystem)
Add3DArchive("Data\Skybox.zip", #PB_3DArchive_Zip)
InitSprite()
InitKeyboard()
InitMouse()
If Screen3DRequester()
AmbientColor(RGB(255,255,255))
CreateMaterial (0, LoadTexture(0, "Terrain_Texture.jpg"))
AddMaterialLayer(0, LoadTexture(1, "Terrain_Detail.jpg"), 1)
CreateTerrain("Terrain.png", MaterialID(0), 4, 0.6, 4, 8)
CreateCamera(0, 0, 0, 100, 100)
CameraLocate(0, 128, 70, 128)
SkyDome("Clouds.jpg",10)
LoadMesh (0, "Robot.mesh")
CreateMaterial(1, LoadTexture(2, "r2skin.jpg"))
CreateEntity(0, MeshID(0), MaterialID(1), 300, 0, 300)
ScaleEntity(0,0.5,0.5,0.5)
Structure Angles
AngleX.w
AngleY.w
AngleZ.w
EndStructure
Dim EntityAngle.w(1)
Repeat
If ExamineKeyboard()
If KeyboardPushed(#PB_Key_Left)
KeyX = -5
ElseIf KeyboardPushed(#PB_Key_Right)
KeyX = 5
Else
KeyX = 0
EndIf
If KeyboardPushed(#PB_Key_Up)
KeyY = 5
ElseIf KeyboardPushed(#PB_Key_Down)
KeyY = -5
Else
KeyY = 0
EndIf
;CONTROL ANGLES
*pointeur.angles= @EntityAngle()
If KeyboardPushed(#PB_Key_q)
RotateEntity(0,5,0,0)
*pointeur\angleX+5
EndIf
If KeyboardPushed(#PB_Key_w)
RotateEntity(0,0,5,0)
*pointeur\angleY+5
EndIf
If KeyboardPushed(#PB_Key_e)
RotateEntity(0,0,0,5)
*pointeur\angleZ+5
EndIf
If KeyboardPushed(#PB_Key_r)
RotateEntity(0,-5,0,0)
*pointeur\angleX-5
EndIf
If KeyboardPushed(#PB_Key_t)
RotateEntity(0,0,-5,0)
*pointeur\angleY-5
EndIf
If KeyboardPushed(#PB_Key_y)
RotateEntity(0,0,0,-5)
*pointeur\angleZ-5
EndIf
EndIf
;Garder Angles entre 0 et 360
If *pointeur\AngleX < 0
*pointeur\AngleX+360
ElseIf *pointeur\AngleX >= 360
*pointeur\AngleX-360
EndIf
If *pointeur\AngleY < 0
*pointeur\AngleY+360
ElseIf *pointeur\AngleY >= 360
*pointeur\AngleY-360
EndIf
If *pointeur\AngleZ < 0
*pointeur\AngleZ+360
ElseIf *pointeur\AngleZ >= 360
*pointeur\AngleZ-360
EndIf
Height.f = TerrainHeight(EntityX(0), EntityZ(0))
CameraLookAt(0, EntityX(0), EntityY(0), EntityZ(0))
MoveEntity(0, Keyy, -EntityY(0)+Height+8, Keyx)
RenderWorld()
Gosub Fps
Gosub DisplayVariables
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
EndIf
Else
MessageRequester("Error", "The 3D Engine can't be initialized",0)
EndIf
End
FPS:
If Val(FormatDate("%ss", Date()))=sek
FPS+1
Else
FPS$=Str(FPS)
FPS=0
EndIf
sek=Val(FormatDate("%ss", Date()))
StartDrawing(ScreenOutput())
DrawingMode(1)
FrontColor(255,255,255)
Locate(1,1)
DrawText("FPS: "+FPS$)
Locate(1, 20) : DrawText(Str(CountRenderedTriangles())+" Triangles")
StopDrawing()
Return
DisplayVariables:
StartDrawing(ScreenOutput())
DrawingMode(1)
FrontColor(255,0,0)
Locate(1, 40) : DrawText(Str(*pointeur\angleX)+" Xdegrés")
Locate(1, 60) : DrawText(Str(*pointeur\angleY)+" Ydegrés")
Locate(1, 80) : DrawText(Str(*pointeur\angleZ)+" Zdegrés")
StopDrawing()
Return