Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 3D-программирование

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 27.09.2005, 19:55   #1
axel186
Знающий
 
Регистрация: 07.09.2005
Сообщений: 238
Написано 2 полезных сообщений
(для 2 пользователей)
Стрелка

Я думаю что на этот вопрос все знают ответ кроме меня
так что помогите мне !

Я делаю шутер, у меня есть аптечка, если я её взял то она должна исчезнуть и мне должны прибавится жизни (пока что всё идёт как надо). А вот вопрос :
Как сделать так чтоб через минуту аптечка опять появилась?

вот мой код :

Type apteka
 Field obj
End Type

...

a.apteka=new apteka
a\obj=loadmesh("apteka.3ds")
entitytype a\obj,aptekatype
positionentity x#,Y#,z#
return true

...

For s.apteka=Each apteka
TurnEntity s\obj,0,1,0
If EntityCollided(player,aptekatype) <>0
Life#=Life#+50
FreeEntity s\obj
delete s
End IF
Next
(Offline)
 
Ответить с цитированием
Старый 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)
 
Ответить с цитированием
Старый 27.09.2005, 21:23   #3
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Добавлю: не просчитывается также pick и прочее, т.к. HIDE убирает entity из процедуры рендера.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 27.09.2005, 22:41   #4
alcosholik
 
Сообщений: n/a
Originally posted by impersonalis@Sep 27 2005, 06:23 PM
HIDE убирает entity из процедуры рендера.
Это повсевместно используется в немалых проектах для того, чтобы не рендерить объекты, которые находятся в области видимости камеры, но не видны для игрока.
А чем меньше объектов рендерится в кадре, тем больше FPS.
 
Ответить с цитированием
Старый 28.09.2005, 08:49   #5
axel186
Знающий
 
Регистрация: 07.09.2005
Сообщений: 238
Написано 2 полезных сообщений
(для 2 пользователей)
УРААА!!
ВСЁ РАБОТАЕТ КАК НАДО ВСЕМ СПАСИБО!
(Offline)
 
Ответить с цитированием
Старый 18.10.2005, 18:49   #6
kortesfil
Знающий
 
Регистрация: 16.10.2005
Сообщений: 310
Написано 7 полезных сообщений
(для 0 пользователей)
а хотябы демо версию своего шутера выложиш?)
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 20:59.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com