
Graphics3D 800, 600, 32, 2
SetBuffer BackBuffer()
Const Type_Plr=1, TypeBOX=2
;===========================
Type TBox
Field ent
Field status=0
Field A,B
End Type
Global bx.TBox
Global pla#=30
Global cu#=0
;======================
bx.Tbox=New TBox
bx\ent=CreateCube()
PositionEntity bx\ent ,0,1,10
EntityType bx\ent,TypeBOX
bx.Tbox=New TBox
bx\ent=CreateCube()
PositionEntity bx\ent ,5,1,10
EntityType bx\ent,TypeBOX
plr=CreateSphere()
EntityRadius plr,1
PositionEntity plr,0,1,5
EntityColor plr,0,128,128
EntityType plr, Type_Plr
cam=CreateCamera()
PositionEntity cam,0,15,0
PointEntity cam,plr
EntityParent cam,plr
light=CreateLight(cam)
Collisions Type_Plr, TypeBOX,2,3
Collisions TypeBOX, Type_Plr,2,3
While Not KeyDown(1)
If KeyDown(200) Then MoveEntity plr,0,0,pla*0.001
If KeyDown(208) Then MoveEntity plr,0,0,-pla*0.001
If KeyDown(203) Then MoveEntity plr,-pla*0.001 ,0,0
If KeyDown(205) Then MoveEntity plr,pla*0.001 ,0,0
MoveBox(plr, TypeBOX)
RenderWorld
UpdateWorld
Flip
Wend
End
Function MoveBox(mplr,typBox)
For bx.TBox = Each TBox
If EntityCollided (mplr, typBox) Then
cu=pla/100
bx\A=EntityX(mplr)-EntityX(bx\ent)
bx\B=EntityZ(mplr)-EntityZ(bx\ent)
If bx\A=0 And bx\B<0 Then TranslateEntity bx\ent,0,0,cu
If bx\A=0 And bx\B>0 Then TranslateEntity bx\ent,0,0,-cu
If bx\B=0 And bx\A>0 Then TranslateEntity bx\ent,-cu,0,0
If bx\B=0 And bx\A<0 Then TranslateEntity bx\ent,cu,0,0
End If
Next
End Function