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

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

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

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

Ответ
 
Опции темы
Старый 02.03.2011, 15:47   #1
Aikon
ПроЭктировщик
 
Регистрация: 12.02.2011
Сообщений: 131
Написано 23 полезных сообщений
(для 52 пользователей)
Триггеры. Как сделать?

Делал, создавая кубики и пряча их альфой
	trigger = CreateCube(scenePivot);
	PositionEntity trigger, -4.5, 3, 2
	EntityPickMode trigger, 2
	If Not IS_DEBUG Then EntityAlpha trigger, 0
	NameEntity trigger, "trigger"
Но как выяснилось, при загрузке уровня все объекты с альфой видны пару секунд, т.е. получается что игрок может видеть триггеры, что совсем плохо.
Как быть? Pivot-у вроде безразмерен и поэтому им воспользоваться наверно не получится.

Триггеры нужны на столкновение и на "игрок увидел".
(Offline)
 
Ответить с цитированием
Старый 02.03.2011, 16:26   #2
Nex
Гигант индустрии
 
Аватар для Nex
 
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений
(для 3,298 пользователей)
Ответ: Триггеры. Как сделать?

Но как выяснилось, при загрузке уровня все объекты с альфой видны пару секунд
Возможно из за этого
If Not IS_DEBUG Then EntityAlpha trigger, 0
(Offline)
 
Ответить с цитированием
Старый 02.03.2011, 16:37   #3
RBK
Знающий
 
Аватар для RBK
 
Регистрация: 06.12.2010
Адрес: Луганск
Сообщений: 252
Написано 112 полезных сообщений
(для 166 пользователей)
Ответ: Триггеры. Как сделать?

Но как выяснилось, при загрузке уровня все объекты с альфой видны пару секунд
Проверь код еще раз, скрыть триггеры нужно до использования команды RenderWorld.
Pivot-у вроде безразмерен и поэтому им воспользоваться наверно не получится.
используй для Pivot-а EntityRadius или EntityBox.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Aikon (03.03.2011)
Старый 02.03.2011, 16:58   #4
Alex_Noc
Разработчик
 
Регистрация: 02.04.2007
Сообщений: 353
Написано 54 полезных сообщений
(для 289 пользователей)
Ответ: Триггеры. Как сделать?

я если честно НИХРЕНА не понял - русским языком пиши, чтобь было понятно.
(Offline)
 
Ответить с цитированием
Старый 03.03.2011, 00:06   #5
Aikon
ПроЭктировщик
 
Регистрация: 12.02.2011
Сообщений: 131
Написано 23 полезных сообщений
(для 52 пользователей)
Ответ: Триггеры. Как сделать?

Проблема решена, вместо
EntityAlpha trigger, 0
Загрузил прозрачную текстуру и повесил ее на триггер.
Но если у кого, какие мысли будут, то готов выслушать (может я неправильно триггеры делаю?)


RBK, для проверки столкновений Pivot видимо подойдет, а вот для проверки "увидел ли игрок кубик", что-то сомневаюсь надо попробовать.
Хм, еще возникла идея загрузить модельку кубика, полностью покрытого прозрачной текстурой или этому задать.


Nex, IS_DEBUG это булевая переменная для отладки. В режиме отладки и расстановки я сам разумеется хочу видеть триггеры. Проблема возникает, когда IS_DEBUG = False.

Сообщение от Alex_Noc Посмотреть сообщение
я если честно НИХРЕНА не понял - русским языком пиши, чтобь было понятно.
Хм, попробую по другому описать.
Делаю небольшую игру от первого лица. Игрок бегает по уровню. Необходимо вызывать события, при достижении игрока некоторой точки, напр. забежал за угол здания или увидел какой то объект.
Проверку достижения точки сделал, разместив на карте Cube с именем и обработкой коллизии.
trigger = CreateCube(...) ;Создали
PositionEntity trigger, ... ; Задали позицию
EntityType trigger, COLLISION_TRIGGER ; Задали тип столкновения 
NameEntity trigger, "trigger" ; Задали имя
Если игрок столкнулся с ним, то считается, что игрок достиг заданной точки, т.е. триггер сработал. Разумеется игрок не должен видеть данный Cube, поэтому я его "скрыл", сделав полностью прозрачным через
EntityAlpha trigger, 0
Добавление триггера делаю при загрузке уровня, т.е. вызывается функция, выполняющая последовательно
1. Создание камеры и игрока
2. Загрузку основной сцены
3. Расстановку триггеров и дополнительных объектов.

Как это примерно выглядит, в коде
ОсновнойЦиклПрограммы
    ОбновитьСцену 
    UpdateWorld
    RenderWorld
КонецОсновногоЦикла
В ОбновитьСцену при наступлении определенных условий вызывается функции ОчиститьСцену и потом ЗагрузитьСцену (описана выше).
Однако после того, как загружаю сцену триггеры еще видны секунду где то, а потом за счет выставленной Aplha скрываются. Надо как то их отрисовать, чтобы не было видно.
(Offline)
 
Ответить с цитированием
Старый 03.03.2011, 08:04   #6
Nex
Гигант индустрии
 
Аватар для Nex
 
Регистрация: 13.09.2008
Сообщений: 2,893
Написано 1,185 полезных сообщений
(для 3,298 пользователей)
Ответ: Триггеры. Как сделать?

IS_DEBUG это булевая переменная для отладки. В режиме отладки и расстановки я сам разумеется хочу видеть триггеры. Проблема возникает, когда IS_DEBUG = False.
Проще создать триггер сразу с нулевой прозрачностью, а потом в цикле уже дебажить..
(Offline)
 
Ответить с цитированием
Старый 03.03.2011, 11:44   #7
Randomize
[object Object]
 
Аватар для Randomize
 
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,355
Написано 2,471 полезных сообщений
(для 6,852 пользователей)
Ответ: Триггеры. Как сделать?

Можно припарентить все триггеры к пивоту и скрыть этот пивот. (ShowEntity/HideEntity распространятся на всю иерархию)
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Aikon (03.03.2011)
Старый 03.03.2011, 11:50   #8
RBK
Знающий
 
Аватар для RBK
 
Регистрация: 06.12.2010
Адрес: Луганск
Сообщений: 252
Написано 112 полезных сообщений
(для 166 пользователей)
Ответ: Триггеры. Как сделать?

RBK, для проверки столкновений Pivot видимо подойдет, а вот для проверки "увидел ли игрок кубик", что-то сомневаюсь надо попробовать.
Используй для Pivot-а EntityPickMode 1 или 3.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Aikon (03.03.2011)
Старый 03.03.2011, 12:59   #9
LLI.T.A.L.K.E.R.
Мастер
 
Аватар для LLI.T.A.L.K.E.R.
 
Регистрация: 24.06.2009
Адрес: Набережные Челны
Сообщений: 930
Написано 292 полезных сообщений
(для 504 пользователей)
Ответ: Триггеры. Как сделать?

Сообщение от Aikon Посмотреть сообщение
Делал, создавая кубики и пряча их альфой
Триггеры нужны на столкновение и на "игрок увидел".
Может лучше pivot-ы делать. Проверять не на столкновение, а на дистанцию. Зачем триггерам Triangles-ы?

Вот TriggerSystem
(если что TrigMain.bb)
работает на радиусах.
(Offline)
 
Ответить с цитированием
Старый 04.03.2011, 20:22   #10
Alex_Noc
Разработчик
 
Регистрация: 02.04.2007
Сообщений: 353
Написано 54 полезных сообщений
(для 289 пользователей)
Ответ: Триггеры. Как сделать?

Твоя проблема в том что изначально нужно сразу после загрузки на все обьекты тригеры прописать HIDEENTITY и только по событиям вызывать - например у тя полоса загрузки =100%
if load_bar>=100 then Showentity (TRIGER твой)
иначе будешь долго мозг чесать в поиске проблемы (Я сталкивался просто с этим!)
Удачи! Надеюсь поможет %)
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Aikon (04.03.2011)
Ответ


Опции темы

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

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


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


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