HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > CBaseAnimating
Заморозка анимации в текущем состоянии
  Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
domded
люби няшного котейку

Дата регистрации: Aug 2013
Проживает: (void)
Сообщений: 146

Рейтинг



CBaseAnimating

Собственно сабж. Как заморозить анимацию в текущем состоянии кадра и интерполяции? Если выставить pev->framerate = 0.0, то оно замораживается в первом кадре анимации.

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

Старое сообщение 27-06-2019 08:50
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



Есть функция StopAnimation. Она как раз таки и выставляет pev->framerate = 0.0; Других способов не предусмотрено. А ты через эвент анимационный выставляй. Я так делал в римейке Кваки для зомбаков. Там же анимация падения-вставания - это одна анимация. И вот он упал и через какое-то время должен подняться. И я по эвенту - стопмашина. А потом ждём некоторое время и подымаем его.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 27-06-2019 09:42
-
domded
люби няшного котейку

Дата регистрации: Aug 2013
Проживает: (void)
Сообщений: 146

Рейтинг



Понял! А как на сервере получить позицию аттачмента? На клиенте есть IEngineStudio.StudioGetAttachment, а на сервере?

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

Старое сообщение 30-06-2019 09:34
- За что?
 XaeroX
Crystice Softworks

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

Рейтинг



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


domded
У CBaseAnimating есть функция GetAttachment().

__________________
Правдой дорожить, лжи не потакать,
Дальних не судить, ближним помогать,
С тишиной сойтись на исходе дня
Научи меня, Родина моя!

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

Старое сообщение 30-06-2019 09:43
-
domded
люби няшного котейку

Дата регистрации: Aug 2013
Проживает: (void)
Сообщений: 146

Рейтинг



Мне кажется, что это немого не то. Что-то оно не учитывает пройденный путь.
При запуске анимации я делаю следующее

C++ Source Code:
1
...
2
pev->sequence = iMySequence;
3
ResetSequenceInfo();
4
GetAttachment( 0, prevPos, prevAng );
5
SetThink( AnimThinkEnd );
6
SetNextThink( flSeqLen ); // длина анимации
7
...
8
void CMyAnimate::AnimThinkEnd( void )
9
{
10
  Vector nowPos, nowAng;
11
  GetAttachment( 0, nowPos, nowAng );
12
}


Когда вызывается AnimThinkEnd(), в nowPos получаются те же самые координаты, которые были в prevPos, хотя визуально анимация стоит на последнем кадре и аттачменты, соответственно, тоже. В чём здесь проблема?

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

Старое сообщение 01-07-2019 12:59
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



Цитата:
domded писал:
хотя визуально анимация стоит на последнем кадре

наверное уже сбросилась на нулевой кадр на сервере.

Добавлено 01-07-2019 в 16:22:

Проверь чему в этот момент равен pev->frame

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 01-07-2019 13:22
-
domded
люби няшного котейку

Дата регистрации: Aug 2013
Проживает: (void)
Сообщений: 146

Рейтинг



Да, так оно и есть. Если поставить think на полную длину анимации, pev->frame в конце равен нулю, хотя визуально анимация остаётся в последнем кадре . А как отловить момент, когда на сервере pev->frame = 255.0, чтобы корректно получить новую позицию аттачмента именно во время 255.0?

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

Старое сообщение 01-07-2019 13:33
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



Ну например в ResetSequenceInfo и там проверку на pev->frame >= 256.0f

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 01-07-2019 14:23
-
domded
люби няшного котейку

Дата регистрации: Aug 2013
Проживает: (void)
Сообщений: 146

Рейтинг



Получилось! Так же задам следующий вопрос тут, дабы не плодить темы:
Как передвинуть эту CBaseAnimating? У монстряков понятно, есть таски. А с CBaseAnimating как?
Пробую сделать

C++ Source Code:
UTIL_MoveToOrigin( ENT( pev ),  GetAbsOrigin() + Vector( 0.0, 0.0, 1.0 ), 36.0f, MOVE_STRAFE )

Что хочу: Переместить ентитю по оси z на 36 юнитов вверх плавно, чтобы она не дёргалась, как при телепорте.
При спауне ставлю movetype_noclip, но ни в какую не хочет двигаться. Пробовал и пев->велосити выставлять, но опять же результата нет.

Отредактировано domded 05-07-2019 в 19:47

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

Старое сообщение 05-07-2019 19:40
- За что?
 Дядя Миша
racing for fish

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

Рейтинг



ноклип и велосити обычно достаточно. Ищи где ошибся, может где-то велосити в 0 сбрасывается.

__________________
My Projects: download page

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

Цитата:

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

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

Старое сообщение 06-07-2019 08:14
-
Тема: (Опционально)
Ваш ответ:



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


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

Временная зона GMT. Текущее время 22:11. Новая тема    Ответить
  Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Теория и практика > Half-Life SDK > CBaseAnimating
Заморозка анимации в текущем состоянии
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

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

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

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

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