HLFX.Ru Forum Страницы (4): « 1 2 [3] 4 »
Показать все 46 сообщений этой темы на одной странице

HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Брызги воды как в Соусе (https://hlfx.ru/forum/showthread.php?threadid=1968)


Отправлено PLut 08-02-2011 в 20:14:

PomanoB Проверь, ведь лучше чем спрашивать и ждать ответа.

__________________
Base Defense on Steam, ModDB


Отправлено PomanoB 08-02-2011 в 20:45:

Проверил, pev->waterlevel для не игроков работает)
На глаз вроде не особо сильная нагрузка, но хотелось бы способ лучше(


Отправлено fire64 08-02-2011 в 21:23:

По поводу кода

PomanoB, объясни что ты хочешь сделать и как. потому что что бы дать тебе совет нужно хотя бы представлять, что ты в конечном счете хочешь получить.

Нагрузки никакой не будет, так как там и так каждый кадр вызывается тчинк функция у каждой энтити и еще пара сотен разных функций и параметров.

Как вариант можешь использовать для проверки столкновений не внешние энтити, а саму воду.

__________________
Вся сила лысого кощея,
Сокрыта в башне из костей
Воздвигнутой, под небесами
На месте похорон людей


Отправлено PomanoB 09-02-2011 в 05:39:

Я хочу сделать брызги при падении любого объекта в воду)
И think-то вызывается не каждый кадр а после pev->nextthink

[qoute]Как вариант можешь использовать для проверки столкновений не внешние энтити, а саму воду.[/quote]
Это как ?
В think'е воды искать ентити в радиусе?


Отправлено SiPlus 09-02-2011 в 07:51:

Примерно так:

function Water:Touch(ent) --прикосновение, ent - прикоснувшаяся энтитя
local Splash = ents.Create("env_sprite") --создает всплеск
Splash:SetKeyValue("sprite","спрайт всплеска") --задает параметр энтити, точно не знаю, как называется параметр, отвечающий за файл спрайта
Splash:SetPos(Vector(ent:GetPos().x,ent:GetPos().y,self:GetPos().z + self:Height())) --устанавливает местоположение спрайта, X и Y это позиция прикоснувшейся энтити, Z это местоположение воды + ее уровень
Splash:Spawn() --создает всплеск
Splash:Activate() --активирует его
timer.Simple(0.5,function() Splash:Remove() end) --удаляет всплеск через 0.5с
end


Отправлено Дядя Миша 09-02-2011 в 11:29:

Цитата:
PomanoB писал:
Единственно что приходит мне в голову - в StartFrame перебирать все энтити и проверять вода или нет, но это как-то фигово(

на уровне движка есть areanodes - бинарное дерево, в котором находятся все физобъекты и при помощи которого можно быстро найти энтитю в заданной точке. Проблема лишь в том, что в игровой дллке этого метода нету, поэтому остается ровно один способ - перебор энтить.
И ничего фигового тут нету. Сервер каждый кадр по нескольку раз перебирает физ. энтити и никого это не колышет.
Причем перебрать достаточно всего один раз - далее-то у нас уже есть энтить, сквозь которую прошла трасса.
Можно и по другому сделать: сделать трейс, проверить контентс на конце, разделить длинну трассы пополам, проверить контентс на середине, потом еще раз пополам. Но лучше всего этим заниматься на клиенте, поскольку там есть GetWaterEntity.

Добавлено 09-02-2011 в 14:29:

SiPlus ты читаешь вообще что пишут? Вода несолидная, трасса проходит сквозь нее не задевая. Причем тут WaterTouch ?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено SiPlus 09-02-2011 в 13:22:

Дядя Миша, ну если SOLID_NONE и карта своя, то можно попробовать какой-нибудь trigger_water создать, который делает всплески, и разместить его по всей поверхности воды. Там, где в воду ничего не падает, можно этот триггер и не делать.


Отправлено Дядя Миша 09-02-2011 в 13:54:

SiPlus ну ты представь себе что SOLID_TRIGGER трасса игнорирует точно также как и SOLID_NOT. Хоть на своей карте, хоть на чужой.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено PLut 09-02-2011 в 14:26:

Некий Festern писал на half-life.ru

Цитата:
Вставляется в код UTIL_BubbleTrail:

Vector SplashOrigin = to;

CBaseEntity *pW = NULL;

for (int i=1;i<=10;i++)
{
pW = UTIL_FindEntityByClassname(pW,"func_water" );
if ( !FNullEnt(pW->pev) )
{
if(((pW->pev->mins.x<to.x)&&(pW->pev->maxs.x>to.x))&&((pW->pev->mins.y<to.y)&&(pW->pev->maxs.y>to.y))&&((pW->pev->mins.z<to.z)&&(pW->pev->maxs.z>to.z)))
{
SplashOrigin.z=pW->pev->maxs.z;
break;
}
}
}

SplashOrigin.x=to.x-((to.x-from.x)*(SplashOrigin.z-to.z)/(from.z-to.z));
SplashOrigin.y=to.y-((to.y-from.y)*(SplashOrigin.z-to.z)/(from.z-to.z));

В итоге SplashOrigin - нужный вектор.


Я этот код использую, при попадании пуль в воду рисую партиклю в точке SplashOrigin.

__________________
Base Defense on Steam, ModDB


Отправлено Дядя Миша 09-02-2011 в 16:18:

Цитата:
PLut писал:
Некий Festern писал на half-life.ru

ну и? С мировой водой это работать не будет.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено PLut 09-02-2011 в 16:33:

Дядя Миша Да, зато будет работать с энтити. Лучше чем возня с триггерами ИМХО.

__________________
Base Defense on Steam, ModDB


Отправлено SiPlus 09-02-2011 в 16:48:

Цитата:
Дядя Миша писал:
трасса игнорирует точно

Какая трасса? К триггеру можно прикоснуться, зачем трасса, местоположение всплеска можно узнать по местоположению вещи, которая в него вошла.


Отправлено Дядя Миша 09-02-2011 в 17:09:

Цитата:
SiPlus писал:
К триггеру можно прикоснуться, зачем трасса, местоположение всплеска можно узнать по местоположению вещи, которая в него вошла.

вещь, которая "входит" в триггер - это пуля. Стрельба пулями традиционно сделана трейслайном, который проходит сквозь триггеры не задевая их. Или тебе нравится блистать идиотизмом?

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Отправлено PomanoB 09-02-2011 в 18:53:

Всем спасибо за ответы, сделал перебором и проверкой waterlevel


Отправлено Дядя Миша 09-02-2011 в 20:31:

PomanoB еще рекомендую код XDM к изучению на предмет ватер-сплешей на мировой воде.

__________________
My Projects: download page

F.A.Q по XashNT
Блог разработчика в телеграме

Цитата:

C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'


Временная зона GMT. Текущее время 12:16. Страницы (4): « 1 2 [3] 4 »
Показать все 46 сообщений этой темы на одной странице

На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024