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

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

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

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

Ответ
 
Опции темы
Старый 18.12.2005, 20:32   #1
ZanoZa
Элита
 
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений
(для 252 пользователей)
Может кто-нить раскажет как мона сделать систему триггеров т.е.
игрок пересекает триггер происходит дейтсвие.
(Offline)
 
Ответить с цитированием
Старый 18.12.2005, 21:03   #2
alcosholik
 
Сообщений: n/a
Первое, что приходит на ум:
if entitydistance(obj, trigger)<1
 ;...
 ;...
end if
 
Ответить с цитированием
Старый 19.12.2005, 12:21   #3
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Ага, только дистанцию побольше надо.
Смотря какой масштаб ты выбрал, т.е. если у тебя размеры объектов измеряются десятками, то дистанция нужна этак единиц в 20-50. Вобщем, в разы больше самого объекта.
Но это не обязательно - от конкретного случая зависит.
(Offline)
 
Ответить с цитированием
Старый 20.12.2005, 20:50   #4
ZanoZa
Элита
 
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений
(для 252 пользователей)
Напишите мне пожалуйста, ну нет времени писать самому, учителя завалили работами :'((
(Offline)
 
Ответить с цитированием
Старый 20.12.2005, 21:00   #5
alcosholik
 
Сообщений: n/a
Дык... написали ж уже.
 
Ответить с цитированием
Старый 20.12.2005, 22:13   #6
ZanoZa
Элита
 
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений
(для 252 пользователей)
Originally posted by alcoSHoLiK@Dec 20 2005, 08:00 PM
Дык... написали ж уже.
Ну всмысле саму функцию триггера, ну и т.д.
чтобы можно было их уже только расставить и усё.
p.s.ну ваще я наглый
(Offline)
 
Ответить с цитированием
Старый 20.12.2005, 23:00   #7
jimon
 
Сообщений: n/a
function trigers ()
;...
if entitydistance(obj, trigger)<1
;...
;...
end if
;...
end function
p.s.ну ваще я наглый
мы тоже
 
Ответить с цитированием
Старый 21.12.2005, 20:36   #8
alcosholik
 
Сообщений: n/a
Лучше уже тогда так:
function check_trigger (obj, trigger, dist=1)
;...
if entitydistance(obj, trigger)<dist
;...
;...
end if
;...
end function
Применение:
player=createcube()

trigger1=createpivot()
positionentity trigger1, 100, 0, 50

trigger2=createpivot()
positionentity trigger2, 0, 0, 100

while not keyhit(1)
;...

check_trigger (player, trigger1)

check_trigger (player, trigger2, 10)

;...
wend
 
Ответить с цитированием
Старый 21.12.2005, 20:49   #9
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Чтоб не вводить в заблуждение - триггеры должны бть реализоаны типами.
+ предыдущие высказывания
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием
Старый 22.12.2005, 13:41   #10
ZanoZa
Элита
 
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений
(для 252 пользователей)
Originally posted by alcoSHoLiK@Dec 21 2005, 07:36 PM
Лучше уже тогда так:
function check_trigger (obj, trigger, dist=1)
;...
if entitydistance(obj, trigger)<dist
;...
;...
end if
;...
end function
Применение:
player=createcube()

trigger1=createpivot()
positionentity trigger1, 100, 0, 50

trigger2=createpivot()
positionentity trigger2, 0, 0, 100

while not keyhit(1)
;...

check_trigger (player, trigger1)

check_trigger (player, trigger2, 10)

;...
wend
memory acces violation
(Offline)
 
Ответить с цитированием
Старый 22.12.2005, 20:18   #11
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Graphics3D 800,600,0,2


player=CreateCube()

camera = CreateCamera (player)
MoveEntity camera,0,5,-10
PointEntity camera,player

RotateEntity CreateLight (),90,0,0

pl = CreatePlane ()
TranslateEntity pl,0,-1,0

tex = CreateTexture (64,64)
SetBuffer TextureBuffer (tex)
For k=1 To 100
 Plot Rand(64),Rand(64)
Next 
EntityTexture pl,tex
FreeTexture tex

trigger1=CreatePivot()
PositionEntity trigger1, 100, 0, 50

trigger2=CreatePivot()
PositionEntity trigger2, 0, 0, 100

SetBuffer BackBuffer ()
FlushKeys ()

timer = CreateTimer (60)

While Not KeyHit(1)
;...

WaitTimer (timer)

TurnEntity player,0,1,0
MoveEntity player,0,0,0.05

check_trigger (player, trigger1)

check_trigger (player, trigger2, 10)

RenderWorld ()
Flip ()
;...
Wend

End


Function check_trigger (obj, trigger, dist=1)
;...
If EntityDistance(obj, trigger)<dist
;...
;...
End If
;...
End Function
(Offline)
 
Ответить с цитированием
Старый 23.12.2005, 14:21   #12
Akima
Бывалый
 
Регистрация: 22.10.2005
Сообщений: 701
Написано 7 полезных сообщений
(для 5 пользователей)
А чо нельзя колизией пользоваться , делаеш тип Игрок=1 метка1=2
и определяеш если коллизия то...
(Offline)
 
Ответить с цитированием
Старый 23.12.2005, 14:27   #13
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Можно, но проблемы лишние нам не нужны (а они будут).
(Offline)
 
Ответить с цитированием
Старый 23.12.2005, 14:30   #14
Akima
Бывалый
 
Регистрация: 22.10.2005
Сообщений: 701
Написано 7 полезных сообщений
(для 5 пользователей)
что за проблемы?
(Offline)
 
Ответить с цитированием
Старый 23.12.2005, 23:52   #15
SubZer0
Администратор
 
Аватар для SubZer0
 
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений
(для 996 пользователей)
Originally posted by Akima@Dec 23 2005, 01:30 PM
что за проблемы?
проблемы будут следующие:

1. это будет тормозить, поскольку на проверку коллизии уходит намного больше компьютерного времени, чем на проверку дистанции (неуверен про коллизию сферы со сферой... надо протестить)

2. на сколько я знаю нельзя сделать так, чтоб была коллизия и в то-же время объекты могли безпрепятственно проходить сквозь друг друга

3. это сложнее в реализации



PS смотрю на код... код хороший, но надо еще сделать переменную, типа флага, чтоб триггер срабатывал только один раз...

__________________
Как минимум я помог многим (с)
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Солнечная система Reizel Проекты на Blitz3D 9 13.12.2009 23:01
система частиц Kuzma 3D-программирование 1 26.10.2009 21:59
Система частиц Dakar 3D-программирование 35 28.09.2009 19:20
система управления с USB smersh Blitz3D 5 10.09.2007 01:32
RPG-система alcoSHoLiK FAQ 0 22.08.2006 20:46


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


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