Code: Select all
EnableExplicit
Enumeration
#Mainform
EndEnumeration
Global WindowStyle.i=#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered
Global Event.l
Global Camera, Mesh, Entity, Player, PlayerSpeed.f
Procedure GameStart()
InitEngine3D()
InitKeyboard()
InitSprite()
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)
;Ground
Mesh = CreatePlane(#PB_Any, 40, 40, 1, 1, 1, 1)
Entity = CreateEntity(#PB_Any, MeshID(Mesh), #PB_Material_None, 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, 0.5, 0.5, 0.1)
;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))
EndProcedure
GameStart()
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
Debug GetEntityAttribute(Player, #PB_Entity_IsActive)
MoveEntity(Player, 0, 0, PlayerSpeed, #PB_Absolute|#PB_Local)
EndIf
CameraFollow(Camera, EntityID(Player), 0, EntityY(Player) + 2, 6, 0.08, 0.08, #True)
ClearScreen(RGB(0, 0, 0))
RenderWorld(80)
FlipBuffers()
ForEver

Code: Select all
If PlayerSpeed <> 0
DisableEntityBody(Player, 0)
Debug GetEntityAttribute(Player, #PB_Entity_IsActive)
MoveEntity(Player, 0, 0, PlayerSpeed, #PB_Absolute|#PB_Local)
EndIf