Страницы (2): [1] 2 » Показать все 17 сообщений этой темы на одной странице |
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=5516)
Скорость шевеления ног
Замедлил скорость передвижения игрока, сделал звуки шагов реже в PM_UpdateStepSound (pmove->flTimeStepSound = fWalking ? 500 : 400, настроил, чтобы по-умолчанию игрок шёл, а cl_movespeedkey наоборот ускорял движение (мне так удобнее), подобрал волшебное число в CStudioModelRenderer::StudioProcessGait, чтобы звук совпадал с анимацией ног
1 | // calc gait frame |
2 | if (pseqdesc->linearmovement[0] > 0) |
3 | { |
4 | m_pPlayerInfo->gaitframe += (m_flGaitMovement * [B]1.33[/B] / pseqdesc->linearmovement[0]) * pseqdesc->numframes; |
5 | } |
6 | else |
7 | { |
8 | m_pPlayerInfo->gaitframe += pseqdesc->fps * dt; |
9 | } |
if ( m_fGaitEstimation ) |
{ |
VectorSubtract( m_pCurrentEntity->origin, m_pPlayerInfo->prevgaitorigin, est_velocity ); |
VectorCopy( m_pCurrentEntity->origin, m_pPlayerInfo->prevgaitorigin ); |
m_flGaitMovement = Length( est_velocity * [B]1.63[/B] ); |
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
перехожу на другой двиг
Yo Den без переделки анимации - дуля. Потому что motion extraction. Но у меня есть для тебя рецепт, сам лично использовал:
1. Уменьшаешь модель в джедсе, например в 0.5. В Дядьмишином модельвьювере не прокатит - он корректно всё делает.
2. Затем декомпилишь её, берёшь от неё нужную секвенцию, и подсовываешь исходной полноразмерной модели. В qc файле указываешь нужной секвенции scale 2.0, если уменьшал на 0.5.
3. Компилишь с помощью studiomdl.
На выходе, если всё правильно сделал, расстояние, которое пробегает игрок за анимацию должно уменьшится в два раза, соответственно, копытами игрок будет семенить реже. Я уже точно не помню, как именно я делал, но смысл именно сначала уменьшить, а потом заново увеличить, но разными тулзами или способами. Поиграйся с вариантами, может быть быстро разберёшься.
__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
перехожу на другой двиг
похоже на опцию которая могла бы пригодиться в явном виде в компиляторе\вьювере
Не проще ли зарескейлить значение из linearmovement чем всё это загадочное дрочево?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша ну не знаю. Это "загадочное дрочево" позволяет замедлить только одну анимацию, а другие не трогать. Это если скорости передвижения слишком отличаются. Если же нужно замедлить все анимации и сразу, тогда да, можно скейлить linearmovement.
Ku2zoff а linearmovement по-твоему к чему относится?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Дядя Миша по-моему, linearmovement относится к конкретной секвенции. Это внутренний параметр. И этот вектор для каждой секвенции разный. Если скейлить значение в коде, то это будет применяться ко всем секвенциям. Или ты предлагаешь индусскую фильтрацию, как в примере с 9-way блендингом?
if (m_pPlayerInfo->gaitsequence == ANIM_WALK_SEQUENCE) |
pseqdesc->linearmovement[0] /= 2.0; |
Я предлагаю написать консольную утилитку, ну или добавить это во встроенный эдитор модельвьювера. Чтобы редактировать этот параметр внутри самой модели, для выбранной секвенции, очевидно же.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Только это такое, необратимое действие. Можно задавать фактор, а можно числами. Но фактор при каждом новом открытии модели скинется на один, очевидно же. Т.е. идея в том, чтобы сам вектор не менялся, но пользователь видел абсолютное значение.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Если монстр шустро бегает, это ж еще не значит, что он так же шустро думает. Я никада в халфовском аи особенно не разбирался, но у меня какое-то смутное знание осталось, что AI вызывается только когда закончится секвенция бега или ходьбы. Т.е. пока монстр идёт - он не думает. Сделал шаг, ну там 5-8 юнитов - огляделся. И конечно когда секвенция играет достаточно быстро, он думает 10 раз в секунду. Или там баг какой-то был, не помню уже. Ну вообщем, если халфовским монстрам поставить 20 фпс, то они активнее ботов становятся. Хрен укроешься.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
__________________
http://www.moddb.com/mods/monorail-quest
Временная зона GMT. Текущее время 16:24. | Страницы (2): [1] 2 » Показать все 17 сообщений этой темы на одной странице |
На основе vBulletin версии 2.3.0
Авторское право © Jelsoft Enterprises Limited 2000 - 2002.
Дизайн и программирование: Crystice Softworks © 2005 - 2024