HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Half-Life SDK (https://hlfx.ru/forum/forumdisplay.php?forumid=8)
-- Нубские вопросы от <censored> и других нубов (https://hlfx.ru/forum/showthread.php?threadid=4535)
Отправлено ZGreen сегодня в 15:25:
Почему бы не сделать анимацию удара с подшагом и последующим отскоком? Вроде, когда дерешься несподручно нос в нос стоять. Теоретически. Сам не дерусь, я только на форуме смелый.
Отправлено JPEG сегодня в 15:35:
Цитата:
ZGreen писал:
Почему бы не сделать анимацию удара с подшагом и последующим отскоком? Вроде, когда дерешься несподручно нос в нос стоять. Теоретически. Сам не дерусь, я только на форуме смелый.
так я так делал, при анимации нпс может сквозь стены проходить__________________
МОЙ НОВЫЙ ПАБЛИК ПО ХЛ))
Отправлено Ku2zoff сегодня в 17:50:
Цитата:
ZGreen писал:
Почему бы не сделать анимацию удара с подшагом и последующим отскоком?
Мудрить с анимациями не надо (если только хочется сделать быстро и просто), у ИИ в халфе есть система щедъюлей, где можно переключать активности, типа: шаг вперёд, удар, шаг назад, тремя разными анимациями. Оно не работает как хочется по двум причинам: первая - затупы при переключении активностей, из-за того, что серверный фпс плавает и эвенты плохо отлавливаются (привет ковыряния с DispatchAnimEvents), вторая - монстры не умеют ходить назад, им надо повернуться лицом по направлению движения. И если второе можно победить, невозбранно модифицировав код перемещения с оглядкой на летающих монстров, то первое очень геморно, и корень проблемы сидит в движке, как объяснял Дядя Миша, ЕМНИП.
Добавлено завтра в 00:34:
Там даже в коде flInterval фиксированный - 0.1, чтобы срабатывания DispatchAnimEvents совпадали с интервалами тчинка монстра gpGlobals->time + 0.1. Я уже точно не помню, но вроде это нужно для того, чтобы клиентский и серверный эвенты срабатывали одновременно. В этой теме я экспериментировал, и в разных вариациях было так, что либо клиентский эвент опаздывает на один pev->frame за серверным, либо серверный не срабатывает. ДМ в этой же теме упоминал, что интервал в IEngineStudio.ClientEvents - сотые доли секунды, а в CBaseAnimating::DispatchAnimEvents - десятые. Соответственно, клиент в любом случае воспроизведёт эвент, например маззлфлеш при стрельбе. А вот сервер может пропустить. Отсюда все затупы со сменой активностей, например, при попытках монстра выйти из боя и найти укрытие. Мой вариант в теме вполне рабочий, но не на моделях, где эвент стоит на последнем кадре. Я забил на это всё, не стал дальше копаться в теме. Хотя очень хотел сделать НПС подвижнее. Если анимаций нет, незачем и код для них писать.
Добавлено завтра в 00:50:
Есть ещё один вариант, но он, на мой взгляд, лишает всей прелести использования студио эвентов на сервере. Это полностью выкинуть эту замечательную систему, и писать фиксированные тайминги в коде, что де на такой-то секунде такой-то анимации монстр наносит урон, делает выстрел, или что-то ещё. Такое себе, потому что опять же, фпс всегда разный, и попасть в эти тайминги нереально. В таком случае монстры должны быть анимированы как игрок. А ведь через эвенты можно не только вызывать функции из кода монстров, но и активировать энтити на карте и ещё много чего.