Publié : jeu. 23/mars/2006 21:15
Le problème actuellement est que la fonction SetEntityFriction est bugué dans la beta 7 donc il faut attendre la beta 8, pour pouvoir s'y remettre et que cela devienne intéressant !
Forums PureBasic - Français
https://www.purebasic.fr/french/
Une surprise, sans doute, bientôt, euh, pas vraimentProgi1984 a écrit :Mais que nous caches tu jeune cachotier? Bientot une surprise ?
J'ai refait un autre essai avec la sphere dans le temple , j'ai juste repris ton code et j'ai changé le mesh circuit par le mesh temple.Progi1984 a écrit :Parce que en gérant la friction, on lui met une friction de 100. Comme ca, il ne glisse plus sur les objets avec lequel il rentre en collision. Et la collision devient parfaite.
Du mal à diriger la sphère, je m'en doutais car moi aussi, au début, j'ai eu du mal. En fait, grace à ODE, il y a une sorte d'inertie sur l'objet (dans ton cas, la sphère).comtois a écrit :C'est intéressant, en effet les collisions fonctionnent bien , mais j'ai encore du mal à diriger la sphère.
Code : Tout sélectionner
\Direction\x = COS_DEG(Camera\AngleX)
\Direction\y = SIN_DEG(Camera\AngleY)
\Direction\z = -SIN_DEG(Camera\AngleX)
Code : Tout sélectionner
\Direction\x = COS_DEG(Camera\AngleX)
\Direction\y = TAN_DEG(Camera\AngleY)
\Direction\z = -SIN_DEG(Camera\AngleX)
ça me parait difficile.Not Found
The requested URL /ogre3dtest.zip was not found on this server.
Code : Tout sélectionner
;
; ------------------------------------------------------------
;
; PureBasic - Entity
;
; (c) 2002 - Fantaisie Software
;
; ------------------------------------------------------------
;
Define.f KeyX, KeyY,KeyXCam, KeyYCam, MouseX, MouseY
Define.l actif
Global actifmesh.s
IncludeFile "Screen3DRequester.pb"
#PB_Entity_StaticBody = 1
#PB_Entity_BoxBody = 2
#PB_Entity_SphereBody = 3
#PB_Shadow_None = 0
#PB_Shadow_Modulative = 1 ; Black shadow (fast)
#PB_Shadow_Additive = 2 ; Additive translucent shadow (more expensive with severl lights)
#PB_Entity_Solid = 0
#PB_Entity_Wireframe = 1 << 0
#PB_Entity_Plot = 1 << 1
#PB_Entity_CastShadow = 1 << 2
#PB_3DArchive_Recursive = 2
Enumeration
#TrackEntity
#OgreEntity
#CubeEntity
#NinjaEntity
#SphereEntity
EndEnumeration
actif=#CubeEntity
actifmesh="Cube"
If InitEngine3D()
Add3DArchive("Data\Skybox.zip", #PB_3DArchive_Zip)
Add3DArchive("Data\Dragon.zip", #PB_3DArchive_Zip)
Add3DArchive("Data\Ogre\" , #PB_3DArchive_FileSystem)
Add3DArchive("Data\Circuit\", #PB_3DArchive_FileSystem)
Add3DArchive("Data\Cube\" , #PB_3DArchive_FileSystem)
Add3DArchive("Data\Ninja\" , #PB_3DArchive_FileSystem)
Add3DArchive("Data\Sphere\" , #PB_3DArchive_FileSystem)
Add3DArchive("Data\" , #PB_3DArchive_FileSystem)
Parse3DScripts()
InitSprite()
InitKeyboard()
InitMouse()
If Screen3DRequester()
AmbientColor(RGB(128,128,128))
EnableWorldPhysics(1)
WorldShadows(#PB_Shadow_Additive)
EnableWorldCollisions(1)
OgreMesh = LoadMesh(#PB_Any, "OgreHead.mesh")
TrackMesh = LoadMesh(#PB_Any, "racingcircuit.mesh")
CubeMesh = LoadMesh(#PB_Any, "Cube.mesh")
SphereMesh = LoadMesh(#PB_Any, "Sphere.mesh")
Text = LoadTexture(#PB_Any, "r2skin.jpg")
Mat = CreateMaterial(#PB_Any, TextureID(Text))
Steel = LoadTexture(#PB_Any, "RustySteel.jpg")
SteelMaterial = CreateMaterial(#PB_Any, TextureID(Steel))
DisableDebugger
CreateEntity(#OgreEntity , MeshID(OgreMesh), 0, 10, 40, 0)
CreateEntity(#TrackEntity , MeshID(TrackMesh), 0, 0, 00, 0)
CreateEntity(#CubeEntity , MeshID(CubeMesh), MaterialID(Mat), 20, 40, 0)
CreateEntity(#SphereEntity, MeshID(SphereMesh), MaterialID(SteelMaterial), 0, 40, 0)
EnableDebugger
EntityPhysicBody(#TrackEntity, #PB_Entity_StaticBody)
EntityRenderMode(#TrackEntity, 0)
EntityPhysicBody(#OgreEntity, #PB_Entity_BoxBody)
EntityRenderMode(#OgreEntity, 0)
ScaleEntity(#OgreEntity, 0.1, 0.1, 0.1)
SetEntityMass(#OgreEntity, 1)
SetEntityFriction(#OgreEntity,30)
EntityPhysicBody(#SphereEntity, #PB_Entity_SphereBody)
EntityRenderMode(#SphereEntity,0)
ScaleEntity(#SphereEntity, 0.05, 0.05, 0.05)
SetEntityMass(#SphereEntity,1)
SetEntityFriction(#SphereEntity, 30)
EntityPhysicBody(#CubeEntity, #PB_Entity_BoxBody)
EntityRenderMode(#CubeEntity,0)
ScaleEntity(#CubeEntity, 0.1, 0.1, 0.1)
SetEntityMass(#CubeEntity, 1)
SetEntityFriction(#CubeEntity, 30)
CreateLight(0, RGB(255,255,255), 100.0, 100, 0)
SkyBox("desert07.jpg")
CreateCamera(0, 0, 0, 100, 100)
CameraLocate(0,0,0,30)
Repeat
Screen3DEvents()
ClearScreen(RGB(0, 0, 0))
If ExamineKeyboard()
If KeyboardPushed(#PB_Key_Pad1) Or KeyboardPushed(#PB_Key_1)
actif=#CubeEntity
actifmesh="Cube"
ElseIf KeyboardPushed(#PB_Key_Pad2) Or KeyboardPushed(#PB_Key_2)
actif=#SphereEntity
actifmesh="Sphere"
ElseIf KeyboardPushed(#PB_Key_Pad3) Or KeyboardPushed(#PB_Key_3)
actif=#OgreEntity
actifmesh="Ogre"
EndIf
If KeyboardPushed(#PB_Key_Left)
KeyX = -100
ElseIf KeyboardPushed(#PB_Key_Right)
KeyX = 100
Else
KeyX = 0
EndIf
If KeyboardPushed(#PB_Key_Up)
KeyY = -100
ElseIf KeyboardPushed(#PB_Key_Down)
KeyY = 100
Else
KeyY = 0
EndIf
If KeyboardPushed(#PB_Key_A)
KeyXCam = -1
ElseIf KeyboardPushed(#PB_Key_D)
KeyXCam = 1
Else
KeyXCam = 0
EndIf
If KeyboardPushed(#PB_Key_W)
KeyYCam = -1
ElseIf KeyboardPushed(#PB_Key_S)
KeyYCam = 1
Else
KeyYCam = 0
EndIf
If KeyboardPushed(#PB_Key_Space)
MoveEntity(#OgreEntity, 10, 40, 0)
EndIf
EndIf
If ExamineMouse()
MouseX = -MouseDeltaX()/10
MouseY = -MouseDeltaY()/10
EndIf
;If KeyXCam<>0: Debug "KeyXCam"+Str(KeyXCam):EndIf
;If KeyYCam<>0:Debug "KeyYCam"+Str(KeyYCam):EndIf
;If KeyX<>0:Debug "KeyX"+Str(KeyX):EndIf
;If KeyY<>0:Debug "KeyY"+Str(KeyY):EndIf
RotateCamera(0, MouseX, MouseY, 0)
MoveCamera (0, KeyXCam, 0, KeyYCam)
MoveEntity(actif,KeyX, 0, KeyY)
If ExamineWorldCollisions()
While NextWorldCollision()
If CheckEntityCollision(#CubeEntity, #SphereEntity)
Debug "Cube and Sphere collide !"
ElseIf CheckEntityCollision(#CubeEntity, #OgreEntity)
Debug "Cube and Ogre collide !"
ElseIf CheckEntityCollision(#SphereEntity, #OgreEntity)
Debug "Sphere and Ogre collide !"
EndIf
Wend
EndIf
RenderWorld()
Screen3DStats()
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) Or Quit = 1
EndIf
Else
MessageRequester("Error", "The 3D Engine can't be initialized",0)
EndIf
End