Цитата(dPlayer @ 20.02.2017, 19:27)
А как связана частота кадров и анимация? Просто если кадров совсем мало, скажем 15 то звук проиграется с нормальной скоростью а вот анимация будет идти ещё лет сто)))
По хорошему все нормальные девелоперы, все что связанно с движением(анимации\координаты и т.д.) рассчитывают исходя из дельты времени(время прошедшее c рендера предыдущего кадра). В целом это выглядит как то так:
Предположим что анимация состоит из 60 кадров которые надо показать в течении 1 секунды, т.е. это анимация по простому 60к\с. Т.е. в 1 секунду надо показать 60 кадров. Считаем сколько времени надо показывать каждый кадр на экране. 1 секунда\60 кадров = 0,016. Т.е. каждые 0.016 секунды надо показывать новый кадр.
Движек игры дает нам дельту времени которая рассчитывается примерно также.
для 30 фпс = 0,03
для 60 = 0,016 и
для 120 = 0,008 Но нельзя забывать что эта дельта всегда плавает и не константа.
Теперь зная вышеперечисленное можем знать какой именно кадр анимации надо взять для текущей дельты. Для этого нужна 1 переменная, так называемый аккумулятор, то простая переменная которая начинает счет с 0 при старте анимации. каждый раз при запросе кадра оно делает так:
accumulator = accumulator+дельта.
Теперь рассчитываем конкретный номер кадра номер_кадра = (accumulator / (1/60)); Результат округляем и получаем целочисленное значение кадра который надо показать в данный момент времени. Если игра начинает тормозить и дельта резко увеличивается то просто будет пропуск кадров, если же наоборот фпс вырастет до 300 то просто многие кадры будут дольше оставаться на экране. В конечном счете при любом фпс в каждый момент реального времени ты увидишь именно тот кадр который должен быть.
PS писал по памяти и могут быть ошибки =). Кстати точно также манипуляцией с дельтой времени можно добиться и slowmo эффекта или наоборот ускорения времени в игре. Но надо не забывать все расчеты производить относительно этой дельты и все будет в шоколаде.
Цитата(STALKER2011x @ 21.02.2017, 10:18)
Полагаю, все из-за корявой системы анимации в сталкере (анимации разделены по типу (руки, ноги, туловище) и проигрываются независимо). Задумка с разделением неплохая, но реализация корявая. Изо всех щелей лезет десинхронизация всех анимаций и остальные программные глюки (вспоминаем анимацию Кардана, когда бутылкой водки не попадает себе в рот, или вечно перекрученного Краба). Думаю, анимация по типу тряпичной куклы подошла бы гораздо лучше.
Подход совершенно верный и правильный, так делают все. Просто в сталкере не сделали блендинга между этими слоями. Или сделали но очень криво.