HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > Разброс пуль
Страницы (2): [1] 2 »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
Drakulla
perpetualum guestum
Девойс

Дата регистрации: Oct 2008
Проживает: paradise
Сообщений: 100

Рейтинг



Half-Life Разброс пуль

{
// Мне нужен тутор по созданию ефекта разброса пуль ну как в контре -
када сидиш точно стреляет , чем больше двигаешся тем больше разброс при стрельбе . Можно еще и про отдачу .
}

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

Старое сообщение 25-11-2008 17:55
- За что?
 XaeroX
Crystice Softworks

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

Рейтинг



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


Что ты уже сделал в этом направлении? Какие идеи, наработки? Исходники поковырял?

__________________

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

Старое сообщение 25-11-2008 18:20
-
Drakulla
perpetualum guestum
Девойс

Дата регистрации: Oct 2008
Проживает: paradise
Сообщений: 100

Рейтинг



мне над для ознакомления

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

Старое сообщение 25-11-2008 18:34
- За что?
 XaeroX
Crystice Softworks

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

Рейтинг



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


Ты сам собираешься изучать СДК и разбираться с нашей помощью, или тебя интересует исключительно готовое?

__________________

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

Старое сообщение 25-11-2008 18:53
-
Drakulla
perpetualum guestum
Девойс

Дата регистрации: Oct 2008
Проживает: paradise
Сообщений: 100

Рейтинг



нет , меня интерисует сам код

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

Старое сообщение 25-11-2008 19:34
- За что?
 XaeroX
Crystice Softworks

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

Рейтинг



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


а... ну я такой код не встречал и сам не писал.

__________________

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

Старое сообщение 25-11-2008 19:36
-
FaL_DissecTor
Let the killing begin

Дата регистрации: Aug 2008
Проживает: Россия
Сообщений: 178
Возраст: 36

Рейтинг



Я начал с этого как раз таки. Но наверное из-за недостаточности знаний о том как там все действует и т.д.

Кароче говоря сначала то что я заметил в коде некоторых игр.
КС - Идут панчи, довольно просто - вверх, после какого-то момента несколько - из стороны в сторону. Сами же пули летят сами по себе, не похоже на разброс, такое ощущение что им уже описан путь с определенной вероятностью разброса. К примеру в той же параное - разброс делается чисто панчами+ разброс, и это не очень удобно с точки игры, слишком неудобно управлять таким разбросом. В кс же пули идут скорее всего по другому отдельно расчитанному вектору разброса, думаю там своя собственная функция разброса отличная от ХЛ-овской FireBulletPlayer (вроде).
А вот в сталкере к примеру разброс постоянен, изменяется модификаторами в режиме приседания, бега, прыжка. И панч идет простой - вверх (притом не возвращается). Такой разброс мне кажется сделать куда проще.

Что я попробывал сделать, но при этом кое какие баги есть (расхождение клиента и сервера скорее всего, пули летят в одном направлении, а декали рисуются в другом месте, где-то упустил вектор трассы который рисует декали).

Я сделал две функции довольно примитивного разброса.
void CAK47::SpreadItUp( void )
{
if (flSpreadInd >= 0.1) flSpreadInd = 0.1;
else flSpreadInd=flSpreadInd+0.02;
SpreadItDown();
}

void CAK47::SpreadItDown( void )
{

if (flSpreadInd==0.008)
{
pev->nextthink = gpGlobals->time + 5.0;
}
if ((0.008>=flSpreadInd) || (0.008 > flSpreadInd-0.1)) flSpreadInd=0.008;
else flSpreadInd=flSpreadInd-0.005;
SetThink( SpreadItDown );
pev->nextthink = gpGlobals->time + 0.2;
}

Соответсвенно в функции атаки
vecDir = m_pPlayer->FireBulletsPlayer( 1, vecSrc, vecAiming, Vector( flSpreadInd, flSpreadInd, flSpreadInd ) , 8192, BULLET_PLAYER_762MM, 0, 0, m_pPlayer->pev, m_pPlayer->random_seed );

и в конце атаки SpreadItUp(); //spread increases
(какой тег для кода С++?)
Вроде работало, хотя уже и не помню сколько раз менял это дело, где-то точно работало, пробывал.

Есть идея создать немного другую функцию. Точнее изменить существующую.

Кароче сделать массив из векторов описанных заранее (чтобы разброс был более предсказуемым), и изменить чуть чуть функцию FireBulletPlayer - добавть туда параметр "сила разброса" (то есть гду нужно увеличивать рандомность разброса, или же использовать это в качестве минимальной планки отклонения, чтобы пули не лезли туда куда не надо) .

Ну и значит, при выстреле вызываем функцию, она по заданной схеме выбирает вектор и возвращает его. И считается переменная какая-либо. Допустим таблица из 10 векторов, 3 из них должны повторятся, с 10ки перебрасываем на семерку и повторяем. При уменьшении разброса идем к началу массива.

Ну ещё приписать какой нибудь "модификатор движения" переменный коэфицент который менялся бы со сменой скорости и положения тела, а сам вектор из таблицы умножался бы на этот коэфицент(тем самым уменьшая разброс).

Ещё я не знаю как делать чтобы панч мог накладываться на предыдущий (в оригинале это только один раз происходит, то есть один скачек экрана, а следующий идет от центра опять же на то же расстояние). У Бузера в параное был этот кода, но там очень многобукаф +).

з.ы. У меня видюха погибла веселой смертью, и читать что либо, не то что код писать - ужасное действие, поэтому пока ниче не сделал. Ещё вопрос где согласование клиента с сервером на эту тему, отчего декали рисуются не там где надо.

__________________
Такие дела...

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

Старое сообщение 25-11-2008 20:29
- За что?
Drakulla
perpetualum guestum
Девойс

Дата регистрации: Oct 2008
Проживает: paradise
Сообщений: 100

Рейтинг



ага , ясно

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

Старое сообщение 26-11-2008 12:49
- За что?
Друг Alermana
-

Группа: Неопытный
Дата регистрации: Jul 2007
Проживает: -
Сообщений: 55

Рейтинг



Цитата:
Drakulla писал:
ага , ясно

И что тебе ясно??

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

Старое сообщение 26-11-2008 13:10
- За что?
Drakulla
perpetualum guestum
Девойс

Дата регистрации: Oct 2008
Проживает: paradise
Сообщений: 100

Рейтинг



што ето дело мутное..

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

Старое сообщение 26-11-2008 14:48
- За что?
Друг Alermana
-

Группа: Неопытный
Дата регистрации: Jul 2007
Проживает: -
Сообщений: 55

Рейтинг



Цитата:
FaL_DissecTor писал:
(расхождение клиента и сервера скорее всего, пули летят в одном направлении, а декали рисуются в другом месте, где-то упустил вектор трассы который рисует декали

Просто стандартные векторы на клиенте задефинены, а вабще первый выстрел всегда в цель это как то даже бесит.

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

Старое сообщение 27-11-2008 06:17
- За что?
FaL_DissecTor
Let the killing begin

Дата регистрации: Aug 2008
Проживает: Россия
Сообщений: 178
Возраст: 36

Рейтинг



У меня появились вопросы.

SetThink( SpreadItDown );
pev->nextthink = gpGlobals->time + 0.2;

Такое оущущение что эта функция не повторяется, слямзил из кода рпг, так что не уверен что она верна для данного случая. Как сделать правильно? Я в перезарядке задал принудительное обнуление разброса. Сейчас разброс увеличивается но не сужается, только при перезарядке.

Vector( flSpreadInd, flSpreadInd, flSpreadInd ) - вот тут у меня вопрос. Это вектор и три координаты его x,y,z как я понял. Начну с того что когда я ставил множитель для каждой координаты то наблюдал странные эффекты. Точно не готов сказать что это 100% верно но наблюдал такие вещи.
первая отвечает не за верх-низ, вторая за лево-право, за что отвечает третья? Она влияет на разброс, притом что разброс серьезно меняется когда она равна 0.0 и 1.0.

следующий.
написал такую дребедень

//*******
if (IN_JUMP) PosMod=10.0;
else if (IN_RUN) PosMod=1.5;
else if (IN_DUCK) PosMod=0.1;
else PosMod=1.0;
//*******

Как поняли PosMod это float переменная - коэфицент положения, незнаю насколько верно, но вроде не хочет работать =). Взял тоже из бошки.

DefilerUnit
Как бы объяснить, стреляю я значит с пушки, трассы и декали рисуются в центре как у мп5 к примеру, а зомбей которые находятся слева и справа(хорошенько так справа) убивает.

__________________
Такие дела...

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

Старое сообщение 27-11-2008 20:01
- За что?
Друг Alermana
-

Группа: Неопытный
Дата регистрации: Jul 2007
Проживает: -
Сообщений: 55

Рейтинг



Цитата:
FaL_DissecTor писал:
Как бы объяснить, стреляю я значит с пушки, трассы и декали рисуются в центре как у мп5 к примеру, а зомбей которые находятся слева и справа(хорошенько так справа) убивает.

ГЫ у стандартных векторов еще в плеере идет вычисление...

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

Старое сообщение 27-11-2008 21:14
- За что?
 XaeroX
Crystice Softworks

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

Рейтинг



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


Цитата:
FaL_DissecTor писал:
Взял тоже из бошки.

Теперь подумай еще раз - в каких случаях условие в первом же if будет выполняться.
Подсказка: во всех

__________________

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

Старое сообщение 27-11-2008 23:36
-
FaL_DissecTor
Let the killing begin

Дата регистрации: Aug 2008
Проживает: Россия
Сообщений: 178
Возраст: 36

Рейтинг



XaeroX
эм косяк. Спасибо что указал, только я так и не пойму как правильно проверять на это условие (сам код). Это у меня развлекаловка, для себя, я не проггер, до всего приходится доходить самому или откуда-то тырить, если догадатся не получается. =)

ив я действительно не знаю отчего физ. полет пули отличается от графического. Физ. вроде нормально работает, а вот граф. только увеличивается.

__________________
Такие дела...

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

Старое сообщение 28-11-2008 20:16
- За что?
Тема: (Опционально)
Ваш ответ:



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


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

Временная зона GMT. Текущее время 20:30. Новая тема    Ответить
Страницы (2): [1] 2 »   Предыдущая тема   Следующая тема
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