Тема: Аптека :)
Показать сообщение отдельно
Старый 27.09.2005, 20:36   #2
SubZer0
Администратор
 
Аватар для SubZer0
 
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений
(для 996 пользователей)
у тебя маленько неправильный подход, тут не нужно удалять объект, его нужно скрывать и запускать таймер по истичении которого аптечка снова появится... смотри пример:

graphics3d 800,600,32,2
setbuffer BackBuffer()

camera=createcamera()
rotateentity camera,45,0,0
positionentity camera,0,50,-50

rotateentity CreateLight(),20,40,0


type ap

 field Xp#
 field Yp#
 field Zp#
 field Time%
 Field entity% 

end type 

; создаем несколько случайных аптечек
for i=1 To 3
 apt.ap=new ap
 apt\Xp=rnd(-40,40)
 apt\Yp=0
 apt\Zp=rnd(-40,40)
 apt\time=0
 apt\entity=createsphere()
 EntityColor apt\entity,255,100,100
 PositionEntity apt\entity,apt\Xp,apt\Yp,apt\Zp
 EntityType apt\entity,2
next

; создаем игрока
player=createcube()
entitytype player,1

; назначаем коллизии
collisions 1,2,1,1


repeat


 For apt.ap = Each ap
; проверяем, если таймер еще не в нуле, значит аптечки еще нет 
; значит нужно уменьшить таймер на 1
 If apt\time>0 Then 
  apt\time=apt\time-1
; если таймер после вычитания равен нулю, то пришло время аптечке появиться
  If apt\time=0 Then showentity apt\entity
 EndIf
	
; если игрок столкнулся именно с этой аптечкой, то...
 If EntityCollided(player,2)=apt\entity

; тут добавляешь здоровье
; или еще чего

; скрываем аптечку и пускаем таймер
  HideEntity apt\entity
  apt\time=200
 EndIf
 Next



 if KeyDown(203) Then TranslateEntity player,-0.5,0,0
 if KeyDown(205) Then TranslateEntity player,0.5,0,0
 if KeyDown(200) Then TranslateEntity player,0,0,0.5
 if KeyDown(208) Then TranslateEntity player,0,0,-0.5
 
 UpdateWorld
 RenderWorld
 
 Flip 
until KeyHit(1)

end
тут действует такая фича, что к скрытым объектам коллизия не просчитывается.
__________________
Как минимум я помог многим (с)
(Offline)
 
Ответить с цитированием