Дэвелопер
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений (для 886 пользователей)
|
Ответ: Дубликаты дверей
Я забыл тебе дописать проверку конкретной двери через сравнение door и ent, вот код подправленный (+ сдвинул камеру чтоб было видно шарик и делэй(20) чтоб притормозить фпс)

Graphics3D 640,480
SetBuffer BackBuffer()
Const t_player=1, t_block=2
Type doors
Field ent
End Type
player=CreateSphere()
EntityType player, t_player
cam=CreateCamera(player)
MoveEntity cam,0,5,-10
bl=CreateCube()
PositionEntity bl,0,0,5
EntityType bl, t_block
HideEntity bl
Collisions t_player, t_block,2,3
Dim AllDoors.doors(3)
For i=0 To 3
AllDoors(i) = New doors
AllDoors(i)\ent = CopyEntity(bl)
Next
PositionEntity AllDoors(0)\ent,10,0,0
PositionEntity AllDoors(1)\ent,5,0,0
PositionEntity AllDoors(2)\ent,0,0,0
PositionEntity AllDoors(3)\ent,-5,0,0
While Not KeyDown(1)
For i=0 To 3
Local door% = EntityCollided(player, t_block)
If door<>0 And door=AllDoors(i)\ent
MoveEntity AllDoors(i)\ent,0,0.2,0
Exit
EndIf
Next
TurnEntity player, 0, 0 -MouseXSpeed()*0.1, 0
TurnEntity cam, MouseYSpeed()*0.1, 0, 0
MoveMouse GraphicsWidth()/2, GraphicsHeight()/2
RotateEntity cam, EntityPitch#( cam ), 0, 0
If KeyDown(17) MoveEntity player,0,0,0.5
If KeyDown(31) MoveEntity player,0,0,-0.5
If KeyDown(30) MoveEntity player,-0.5,0,0
If KeyDown(32) MoveEntity player,0.5,0,0
UpdateWorld()
RenderWorld()
Flip
Delay(20)
Wend
End
|