HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Помогите немного( а может и много )
Брызги при выстреле по воде
Страницы (4): [1] 2 3 4 »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
ONeiLL
CrazyUkrainian

Дата регистрации: Dec 2011
Проживает: Украина, Житомир
Сообщений: 562
Возраст: 26

Рейтинг



Помогите немного( а может и много )

Я вот сегодня утром быстренько наклепал код

C++ Source Code:
1
void CBaseEntity::FireBulletsWater( Vector vecSrc, Vector vecEnd )
2
{
3
  if( ( POINT_CONTENTS( vecEnd ) == CONTENTS_WATER && POINT_CONTENTS( vecSrc ) == CONTENTS_WATER )
4
    || POINT_CONTENTS( vecEnd ) != CONTENTS_WATER && POINT_CONTENTS( vecSrc ) != CONTENTS_WATER )
5
  return;
6
 
7
  // Ищем растояние между vecSrc и vecEnd
8
  float x = vecEnd.x - vecSrc.x;
9
  float y = vecEnd.y - vecSrc.y;
10
  float z = vecEnd.z - vecSrc.z;
11
  float len = sqrt( x * x + y * y + z * z );
12
 
13
  // Делим по полам
14
  Vector vecTemp = Vector( ( vecEnd.x + vecSrc.x ) / 2, ( vecEnd.y + vecSrc.y ) / 2, ( vecEnd.z + vecSrc.z ) / 2 );
15
 
16
  if( len <= 1 )
17
  {
18
    UTIL_Ricochet( vecTemp, 1 );	// Только не смейтесь =)
19
    // За место этого надо рисовать брызги
20
  }
21
  else
22
  {
23
    if( POINT_CONTENTS( vecTemp ) == POINT_CONTENTS( vecEnd ) )
24
      FireBulletsWater( vecSrc, vecTemp );
25
    else
26
      FireBulletsWater( vecTemp, vecEnd );
27
  }
28
}


Эта функция методом бсп поиска находит точку соприкосновения пули с поверхностью воды (находит правильно, и даёт ошибку не больше чем на 0.5 юнита). Но у меня всегда были проблемы с эффектами, и я не могу до конца доделать
Подскажите, как лутше всё организовать, как отрисовать эти самые брызги и т.д. Можно всё расказать на словах, не обязательно на коде

Сообщить модератору | | IP: Записан
Сообщение: 99435

Старое сообщение 29-05-2012 16:49
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34580
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


TE_STREAKSPLASH

__________________

Сообщить модератору | | IP: Записан
Сообщение: 99437

Старое сообщение 29-05-2012 16:54
-
ONeiLL
CrazyUkrainian

Дата регистрации: Dec 2011
Проживает: Украина, Житомир
Сообщений: 562
Возраст: 26

Рейтинг



// coord coord coord (start position)
// coord coord coord (direction vector)
// byte (color)
// short (count)
// short (base speed)
// short (ramdon velocity)

Смущают две последние строчки, как это:
базовая скорость и рандомная скорость ????

Добавлено 29-05-2012 в 20:25:

C++ Source Code:
1
void UTIL_Splash( const Vector &position, const Vector &direction, short count, short speed, short randspeed )
2
{
3
  MESSAGE_BEGIN( MSG_PVS, SVC_TEMPENTITY, position );
4
 
5
  WRITE_BYTE( TE_STREAK_SPLASH );
6
 
7
  WRITE_COORD( position.x );
8
  WRITE_COORD( position.y );
9
  WRITE_COORD( position.z );
10
 
11
  WRITE_COORD( direction.x );
12
  WRITE_COORD( direction.y );
13
  WRITE_COORD( direction.z );
14
 
15
  WRITE_BYTE( 0 );
16
  WRITE_BYTE( 0 );
17
  WRITE_BYTE( 100 );
18
 
19
  WRITE_SHORT( count );
20
 
21
  WRITE_SHORT( speed );
22
  WRITE_SHORT( randspeed );
23
 
24
  MESSAGE_END();
25
}


Но при вызове эта шняга кидает такое:

BAD: 73:svc_bad
Host_Error: CL_ParseServerMessage: Illegible server message - svc_ba

Сообщить модератору | | IP: Записан
Сообщение: 99438

Старое сообщение 29-05-2012 17:25
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32316
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
ONeiLL писал:
Эта функция методом бсп поиска находит точку соприкосновения пули с поверхностью воды

не BSP. Просто бинарным

__________________
My Projects: download page

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

Цитата:

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

Сообщить модератору | | IP: Записан
Сообщение: 99440

Старое сообщение 29-05-2012 17:53
-
ONeiLL
CrazyUkrainian

Дата регистрации: Dec 2011
Проживает: Украина, Житомир
Сообщений: 562
Возраст: 26

Рейтинг



А какая разница?

Сообщить модератору | | IP: Записан
Сообщение: 99441

Старое сообщение 29-05-2012 17:55
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34580
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Цитата:
ONeiLL писал:
// byte (color)

Написано же - цвет это ОДИН байт. Зачем ты целых три шлёшь?
В данном случае это индекс из палитры. Индекс синего не помню, но он там точно есть, я юзал когда-то.

__________________

Сообщить модератору | | IP: Записан
Сообщение: 99443

Старое сообщение 29-05-2012 17:57
-
ONeiLL
CrazyUkrainian

Дата регистрации: Dec 2011
Проживает: Украина, Житомир
Сообщений: 562
Возраст: 26

Рейтинг



Эх, криво получается, я наверно лутше напишу сам этот эффект, опираясь на тутор от кутузова

Добавлено 29-05-2012 в 21:38:

З.Ы спасибо Хавку, что напомнил мне про это =)

Сообщить модератору | | IP: Записан
Сообщение: 99449

Старое сообщение 29-05-2012 18:38
- За что?
ONeiLL
CrazyUkrainian

Дата регистрации: Dec 2011
Проживает: Украина, Житомир
Сообщений: 562
Возраст: 26

Рейтинг



Ладно, вроде получилась, у кого есть подходящие спрайты?

Сообщить модератору | | IP: Записан
Сообщение: 99475

Старое сообщение 30-05-2012 07:12
- За что?
Lev
Житель форума

Дата регистрации: Dec 2011
Проживает: Оренбург
Сообщений: 786
Возраст: 30

Рейтинг



Может в хл2 есть

Сообщить модератору | | IP: Записан
Сообщение: 99487

Старое сообщение 30-05-2012 09:36
- За что?
ONeiLL
CrazyUkrainian

Дата регистрации: Dec 2011
Проживает: Украина, Житомир
Сообщений: 562
Возраст: 26

Рейтинг



Я искал, нашол, но мне нужен анимированый, а с такими вещами как фотошоп и т.д я не дружу

Сообщить модератору | | IP: Записан
Сообщение: 99489

Старое сообщение 30-05-2012 09:51
- За что?
Lev
Житель форума

Дата регистрации: Dec 2011
Проживает: Оренбург
Сообщений: 786
Возраст: 30

Рейтинг



А ты на обычном хл сдк делаешь или на спирите?

Сообщить модератору | | IP: Записан
Сообщение: 99490

Старое сообщение 30-05-2012 09:52
- За что?
ONeiLL
CrazyUkrainian

Дата регистрации: Dec 2011
Проживает: Украина, Житомир
Сообщений: 562
Возраст: 26

Рейтинг



Обычный

Сообщить модератору | | IP: Записан
Сообщение: 99491

Старое сообщение 30-05-2012 09:55
- За что?
Lev
Житель форума

Дата регистрации: Dec 2011
Проживает: Оренбург
Сообщений: 786
Возраст: 30

Рейтинг



А с фанк ватер твой способ определения работает?

Сообщить модератору | | IP: Записан
Сообщение: 99492

Старое сообщение 30-05-2012 10:02
- За что?
ONeiLL
CrazyUkrainian

Дата регистрации: Dec 2011
Проживает: Украина, Житомир
Сообщений: 562
Возраст: 26

Рейтинг



да

Добавлено 30-05-2012 в 13:06:

Только лутше зделать по другому, вот так:

C++ Source Code:
1
void CBaseEntity::FireBulletsWater( Vector vecSrc, Vector vecEnd )
2
{
3
  if( ( POINT_CONTENTS( vecEnd ) == CONTENTS_WATER && POINT_CONTENTS( vecSrc ) == CONTENTS_WATER )
4
    || ( POINT_CONTENTS( vecEnd ) != CONTENTS_WATER && POINT_CONTENTS( vecSrc ) != CONTENTS_WATER ) )
5
  return;
6
 
7
  // Ищем растояние между vecSrc и vecEnd
8
  float x = vecEnd.x - vecSrc.x;
9
  float y = vecEnd.y - vecSrc.y;
10
  float z = vecEnd.z - vecSrc.z;
11
  float len = sqrt( x * x + y * y + z * z );
12
 
13
  // Делим по полам
14
  Vector vecTemp = Vector( ( vecEnd.x + vecSrc.x ) / 2, ( vecEnd.y + vecSrc.y ) / 2, ( vecEnd.z + vecSrc.z ) / 2 );
15
 
16
  if( len <= 1 )
17
  {
18
    // Рисуем =)
19
  }
20
  else
21
  {
22
    if( POINT_CONTENTS( vecTemp ) != POINT_CONTENTS( vecSrc ) )
23
      FireBulletsWater( vecSrc, vecTemp );
24
    else
25
      FireBulletsWater( vecTemp, vecEnd );
26
  }
27
}

Сообщить модератору | | IP: Записан
Сообщение: 99493

Старое сообщение 30-05-2012 10:06
- За что?
Lev
Житель форума

Дата регистрации: Dec 2011
Проживает: Оренбург
Сообщений: 786
Возраст: 30

Рейтинг



У меня есть один убогий спрайт - вот

Вложение: wsplash_x.rar (3.3 кб)
Этот файл был скачан 163 раз.

Сообщить модератору | | IP: Записан
Сообщение: 99494

Старое сообщение 30-05-2012 10:22
- За что?
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 01:01. Новая тема    Ответить
Страницы (4): [1] 2 3 4 »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Помогите немного( а может и много )
Брызги при выстреле по воде
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

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