Показать сообщение отдельно
Старый 02.03.2012, 07:08   #15
Жека
Дэвелопер
 
Регистрация: 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
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Devilox (02.03.2012)