Ни все так просто как бы тебе казалось!
Вот те код, правда не мой, я тебе его подредактировал, чтоб ты смог разобраться! Но без коментов, думаю так поймешь!

Graphics3D 640, 480,32,2
SetBuffer BackBuffer()
Dim aCube(20)
Const TypePlayer = 1, TypeDoor = 3
Const HDOOR = 6
Const OPENING = 10, OPENED = 20, CLOSING = 30, CLOSED = 40
Global player=CreateSphere()
PositionEntity player,6, 0.4, -15
ScaleEntity player,0.1,0.1,0.1
TurnEntity player,0,0,0
EntityType player, TypePlayer
cam=CreateCamera(player)
light=CreateLight(1)
Global Floortex=LoadTexture("floor.jpg")
Floor1=CreatePlane()
PositionEntity Floor1,0,-1.5,0
EntityTexture Floor1, floortex
Type doorsinfo
Field ix%,iz%
Field oDoor%
Field status%
Field pos#
Field doortype%
Field ticks#
End Type
Dim Doors.doorsinfo( 50 )
Global NumDoors = 0
tex5 = LoadTexture ("door1.jpg")
For i=1 To 5
aCube(i)=CreateCube()
EntityTexture aCube(i), tex5
ScaleEntity aCube(i),1.5,1.5,0.2
EntityType aCube(i), TypeDoor
NumDoors = NumDoors + 1
Doors(NumDoors) = New doorsinfo
Doors(NumDoors)\oDoor = aCube(i)
Doors(NumDoors)\ix = i*8
Doors(NumDoors)\iz = j*3
Doors(NumDoors)\status = CLOSED
Doors(NumDoors)\pos = 0
Doors(NumDoors)\doortype = HDOOR
PositionEntity aCube(i), i*8, 0, j*3
Next
Collisions TypePlayer, TypeWall, 2, 3
Collisions TypePlayer, TypeDoor, 2, 3
While Not KeyDown( 1 )
If KeyDown(200) MoveEntity player, 0, 0, 0.2
If KeyDown(208) MoveEntity player, 0, 0, -0.2
If KeyDown(203) TurnEntity player, 0, 2, 0
If KeyDown(205) TurnEntity player, 0, -2, 0
entitywall% = EntityCollided(Player,TypeWall)
entitydoor% = EntityCollided(Player,TypeDoor)
CollideDoors(entitydoor)
UpdateWorld
RenderWorld
Flip
Wend
End
Function CollideDoors( door )
For i=1 To NumDoors
If Str(Doors(i)\oDoor) = Str(door)
Doors(i)\status = OPENING
EndIf
Next
If current + time_delay < MilliSecs()
For i=1 To NumDoors
If Doors(i)\status = OPENING
Doors(i)\pos = Doors(i)\pos + 0.1
If Doors(i)\doortype = HDOOR
PositionEntity Doors(i)\oDoor, Doors(i)\ix + Doors(i)\pos, 0, Doors(i)\iz
EndIf
If Doors(i)\pos > 2.8
Doors(i)\pos = 2.8
Doors(i)\status = OPENED
Doors(i)\ticks = MilliSecs()+3000
EndIf
EndIf
If Doors(i)\ticks < MilliSecs() And Doors(i)\status = OPENED Then
If Doors(i)\doortype = HDOOR
Doors(i)\status = CLOSING
EndIf
EndIf
If Doors(i)\status = CLOSING
Doors(i)\pos = Doors(i)\pos - 0.1
If Doors(i)\pos < 0
Doors(i)\pos = 0
Doors(i)\status = CLOSED
EndIf
If Doors(i)\doortype = HDOOR
PositionEntity Doors(i)\oDoor, Doors(i)\ix + Doors(i)\pos, 0, Doors(i)\iz
EndIf
EndIf
Next
EndIf
current = MilliSecs()
End Function
Media свою вставь...