MoveEntity() ne fonctionne pas quand l'entité c'est endormi
Publié : jeu. 03/avr./2014 21:42
Je ne m'explique pas le comportement de cette partie du code.Quand PlayerSpeed est différent de 0, le cube devrait bouger. Hors ce n'est pas le cas.
Par contre si j’enlève la condition le cube bouge bien !
Un exemple de code.Je fais ce test pour que le moteur 3D s'occupe de l'inertie du cube quand on ne presse plus sur la touche Up ou Down.
Code : Tout sélectionner
If PlayerSpeed <> 0
MoveEntity(Player, 0, 0, PlayerSpeed, #PB_Absolute|#PB_Local)
EndIf
Par contre si j’enlève la condition le cube bouge bien !
Un exemple de code.
Code : Tout sélectionner
EnableExplicit
Enumeration
#Mainform
EndEnumeration
Global WindowStyle.i=#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered
Global Event.l
Global Camera, Player, PlayerSpeed.f
Procedure Load_Scene()
Protected Texture, Material, Mesh, Entity
; Material
Texture = CreateTexture(#PB_Any,512,512)
StartDrawing(TextureOutput(Texture))
Box(0,0,512,512,RGB(0, 0, 0))
Box(1,1,510,510,RGB(255, 216, 0))
StopDrawing()
Material = CreateMaterial(#PB_Any,TextureID(texture))
;
; Ground
Mesh = CreatePlane(#PB_Any, 100, 100, 3, 6, 6, 6)
Entity = CreateEntity(#PB_Any, MeshID(Mesh), MaterialID(Material), 0, 0, 0)
EntityPhysicBody(Entity, #PB_Entity_StaticBody, 2, 0, 1)
;
; Player
Mesh = CreateCube (#PB_Any, 1)
Player = CreateEntity(#PB_Any, MeshID(Mesh), #PB_Material_None, 0, 1, 0)
EntityPhysicBody(Player, #PB_Entity_BoxBody, 1, 1, 0)
;
; Ambience
AmbientColor(RGB(127, 127, 127))
CreateLight(#PB_Any,RGB(151, 251, 151), -1.8, 10, 5)
WorldShadows(#PB_Shadow_Additive)
;
; camera
Camera = CreateCamera(#PB_Any,0,0,100,100)
CameraBackColor(Camera, RGB(145, 182, 201))
MoveCamera(Camera, 0, 500, 0, #PB_Absolute)
EndProcedure
Procedure Start()
InitEngine3D()
InitKeyboard()
InitSprite()
InitMouse()
OpenWindow(#Mainform,0,0,1024,768, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(#Mainform),0,0,1024,768,0, 0, 0)
KeyboardMode(#PB_Keyboard_International)
Load_Scene()
EndProcedure
start()
Repeat
Repeat
Event = WindowEvent()
Select Event
Case #PB_Event_CloseWindow
End
EndSelect
Until Event = 0
If ExamineKeyboard()
If KeyboardPushed (#PB_Key_Escape)
Break
EndIf
EndIf
If KeyboardPushed (#PB_Key_Up)
PlayerSpeed = - 1
ElseIf KeyboardPushed (#PB_Key_Down)
PlayerSpeed = 1
Else
PlayerSpeed = 0
EndIf
If KeyboardPushed (#PB_Key_Left)
RotateEntity(Player, 0, 1.5, 0, #PB_Relative)
ElseIf KeyboardPushed (#PB_Key_Right)
RotateEntity(Player, 0, -1.5, 0, #PB_Relative)
EndIf
If PlayerSpeed <> 0
MoveEntity(Player, 0, 0, PlayerSpeed, #PB_Absolute|#PB_Local)
EndIf
CameraFollow(Camera, EntityID(Player), 0, EntityY(Player) + 2, 6, 0.08, 0.08, #True)
; Render
ClearScreen(RGB(0, 0, 0))
RenderWorld(80)
FlipBuffers()
ForEver