2013-12-01 8 views
0

Например, в cocos2d:Какова временная дельта или временная метка, используемая в методах обновления игрового цикла?

- (void)update:(ccTime)delta 

может кто-то объяснить, что эти временные дельт или временные метки используются для? Как они относятся к тому, как обновляется игровой мир? Это потому, что мы не знаем fps надежно и не должны просто полагаться на инкрементные обновления свойств на основе -update calls?

+1

читайте @ LearnCocos2d ответьте здесь, на FPS ... http://stackoverflow.com/questions/13830185/why-is-only-60-fps-really-smooth-in-cocos2d. В принципе, вы получите (в cocos2d) все ваши методы обновления, вызванные после цикла обновления экрана. В зависимости от того, что вы делаете в любом из этих методов обновления (т. Е. Времени), ваш код может сильно повлиять на FPS, но в основном на каждый вызов. Таким образом, в следующий раз, когда вы вызываетесь, может быть важно знать дельту с момента последнего вызова, если вы пытаетесь имитировать реалистичную временную базу заметным образом (пропускайте кадры, двигайтесь больше как функция скорости солдата). – YvesLeBorg

+0

ОК, поэтому цель дельта заключается в том, что ваши анимации не зависят от FPS, но они зависят от времени? – openfrog

+0

правильный. Даже когда вы устанавливаете fps, это всего лишь смутное обещание, а не обязательство. Таким образом, вы можете получить результат (при 60 кадрах в секунду) с одним кадром на 0,0167 секунды, а затем на 0,33. Время имеет значение, если вы хотите избежать неустойчивого движения. – YvesLeBorg

ответ

5

Важно сделать независимое движение кадра. Как правило, любое движение символов вы принимаете во внимание время с момента последнего вызова обновления.

Это должно гарантировать, что ваша игра ведет себя одинаково на устройствах различной производительности. Если вы перемещаете символ по 1 пикселю на каждый кадр, то на устройстве, которое работает со скоростью 60 кадров в секунду, символ будет перемещаться в два раза быстрее, чем на устройстве, которое получает 30 кадров в секунду.

Если вы повлияли на все коды движения, например, по времени дельты, вы убедитесь, что все устройства будут вести себя одинаково.

Простая скорость движения кадров. То, что умножает вектор движения на deltaTime, достигнет этого.

+2

это не совсем так просто, если визуальные эффекты (вид) не отделены от игровой логики (модели). Вы можете столкнуться с проблемами логики игры, такими как туннелирование через коллизии при низких частотах кадров: http://www.learn-cocos2d.com/2013/10/game-engine-multiply-delta-time-or-not/ – LearnCocos2D

+0

О, хорошо поэтому deltaTime является фактором. Например, когда устройство имеет 30 кадров в секунду, оно равно 2, а когда устройство имеет 60 кадров в секунду, оно равно 1? И вы умножаете его на все? Хороший вопрос об развязанной логике игры. – openfrog

 Смежные вопросы

  • Нет связанных вопросов^_^