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

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=1092)


Отправлено NorthWanderer 06-01-2008 в 22:58:

Траиктория полета гильзы

Как ее изминить чтобы она была не направо и вверх, а налево
если кто не понял вот скрин:


Отправлено Ku2zoff 07-01-2008 в 03:54:

В ev_hldm.cpp

C++ Source Code:
EV_GetDefaultShellInfo( args, origin, velocity, ShellVelocity, ShellOrigin, forward, right, up, 20, -12, 4 );
// думаю, что 20 -12 и 4 это скорость в направлениях forward right и up
EV_EjectBrass ( ShellOrigin, ShellVelocity, angles[ YAW ], shell, TE_BOUNCE_SHELL );


Отправлено Тренсфер 07-01-2008 в 08:34:

Там ещё задаётся и корость вращения
Я например инвертировал вектор right
Вот так:
есть на клиенте строки

C++ Source Code:
EV_GetDefaultShellInfo( args, origin, velocity, ShellVelocity, ShellOrigin, forward, right, up, 20, -12, 4 ); //Позиция откуда будут вылетать и лететь гильзы.
 
EV_EjectBrass ( ShellOrigin, ShellVelocity, angles[ YAW ], shell, TE_BOUNCE_SHELL ); //бросаем медную гильзу

В первой функции есть параметр right который говорит что гильза летит направо. Это значение мы получаем из функции AngleVectors, которая по воле случая (кажись) не возвращает левый вектор относительно угла игрока.
Я делал так
C++ Source Code:
1
vec3_t left; //обьявляем наш левый вектор
2
....тут остальые обьявления
3
AngleVectors( angles, forward, right, up );//после того как получили векторы
4
 
5
left=-right;//сделаем наш вектр наоборот
6
....остальной код
7
EV_GetDefaultShellInfo( args, origin, velocity, ShellVelocity, ShellOrigin, forward, left, up, 20, -12, 4 ); //Позиция откуда будут вылетать и лететь гильзы.

Это всего лишь ещё один способ сделать это

__________________
Хотелось бы, чтобы не только хотелось...


Отправлено NorthWanderer 07-01-2008 в 09:04:

а нелзя как нибуть место откуда вылетает гильза прицепить к кости модели как мазлфлэшы ?


Отправлено Тренсфер 07-01-2008 в 09:14:

Кодингом- врядли. А моделлингом можно как у дробовика, т.е. сделать гильзу, анимацию вылета гильзы из пушки на модели пушки. Приделать эту анимацию в анимации выстрела. Потом кодингом кидать такую же гильзу под ноги, якобы это та самая.
Но зачем ? Хорошо регулировать вылет гильзы на стволе это отдельное искусство настройщика

__________________
Хотелось бы, чтобы не только хотелось...


Отправлено NorthWanderer 07-01-2008 в 09:30:

так это хорошо, но как сделать, чтобы гильзу не подбрасывало наверх, чтоб она летела прямо. Я пробовал удалять строчку up вот тут:

C++ Source Code:
EV_GetDefaultShellInfo( args, origin, velocity, ShellVelocity, ShellOrigin, forward, -right, up, 17, -12, -6 );

но компилятор начинал ругаться так:
sdk\Multiplayer Source\cl_dll\ev_hldm.cpp(834) : error C2660: 'EV_GetDefaultShellInfo' : function does not take 10 parameters


Отправлено Ku2zoff 07-01-2008 в 10:11:

Точку вылета гильзы можно сделать аттачментом(как в кс) - а это моделлинг и кодинг А может в хл так и есть?


Отправлено Scream 07-01-2008 в 11:16:

NorthWanderer Если убираешь параметр, ставь вместо него 0.
Вроде прально сказал)))


Отправлено Тренсфер 07-01-2008 в 11:39:

Да, правильно function does not take 10 parameters
Означеет что функции не достаточно 10 пораметров которые уже есть. Но я незнаю что из этого получится. Я всегда делал деление параметра на число.

__________________
Хотелось бы, чтобы не только хотелось...


Отправлено rocksTaa 07-01-2008 в 15:29:

моделингом также можно обойтись даж без анимации посмотрите как это сделано в файр армсе **********
$sequence "fire1" "fire1" fps 30 {
{ event 5001 0 "21" }
{ event 5001 0 "33" }
{ event 5005 1 "models/shell556.mdl 3 200" }
****************
но заработает ли в самом хл ХЗ...

__________________
rt


Отправлено Ku2zoff 07-01-2008 в 17:07:

rocksTaa ну естественно в файрармсе есть эвент 5005 который выбрасывает специальную гильзу. Как сделать такое - изучай исходный код Xash 0.39 и модели к нему.


Отправлено Дядя Миша 08-01-2008 в 13:52:

Цитата:
Это значение мы получаем из функции AngleVectors, которая по воле случая (кажись) не возвращает левый вектор относительно угла игрока.

Есть две основных системы координат left-handed и right-handed.
В хл используется правосторонняя.
левый вектор можно получить соответственно с помощью AngleVectorsFLU
code:
_inline void AngleVectorsFLU(const vec3_t angles, vec3_t forward, vec3_t left, vec3_t up) { float angle; static float sr, sp, sy, cr, cp, cy; // static to help MS compiler fp bugs angle = angles[YAW] * (M_PI*2 / 360); sy = sin(angle); cy = cos(angle); angle = angles[PITCH] * (M_PI*2 / 360); sp = sin(angle); cp = cos(angle); if (forward) { forward[0] = cp*cy; forward[1] = cp*sy; forward[2] = -sp; } if (left || up) { if (angles[ROLL]) { angle = angles[ROLL] * (M_PI*2 / 360); sr = sin(angle); cr = cos(angle); if (left) { left[0] = sr*sp*cy+cr*-sy; left[1] = sr*sp*sy+cr*cy; left[2] = sr*cp; } if (up) { up[0] = cr*sp*cy+-sr*-sy; up[1] = cr*sp*sy+-sr*cy; up[2] = cr*cp; } } else { if (left) { left[0] = -sy; left[1] = cy; left[2] = 0; } if (up) { up[0] = sp*cy; up[1] = sp*sy; up[2] = cp; } } } }


Отправлено XaeroX 08-01-2008 в 16:44:

Дядя Миша на кой хрен, простите, писать еще одну функцию, если левый вектор - это правый со знаком минус?

__________________

xaerox on Vivino


Отправлено Дядя Миша 08-01-2008 в 16:58:

XaeroX найди еще 10 отличий
а они есть.


Отправлено XaeroX 08-01-2008 в 17:33:

Дядя Миша я не собираюсь искать отличия. Я просто утверждаю:

Цитата:
XaeroX писал:
левый вектор - это правый со знаком минус

Будешь с этим спорить?

__________________

xaerox on Vivino


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

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