2d игровая физика облегчение / выход на основе скорости - PullRequest
1 голос
/ 30 марта 2012

Недавно я экспериментировал и пытался воссоздать эффект отскакивания краев в пользовательском интерфейсе iOS в моей игре, чтобы при прокрутке за пределы уровня камера медленно возвращалась к границе.

В настоящий момент я реализовал некоторые вычисления анимации Роберта Пеннера, портированные из ActionScript, однако я не уверен, является ли это правильным подходом из-за того, что он не учитывает скорость нашей камеры. На данный момент это выглядит примерно так:

easeInOut(currentTime, startValue, endValue, duration);

Фактические реализации доступны здесь: http://www.jesusgollonet.com/blog/2007/09/24/penner-easing-cpp/

Я пришел к выводу, что это своего рода серая область, так как я не смог найти много информации о ней, либо я не знаю правильного названия для такого рода расчетов, который я пытаюсь описать. Если у кого-нибудь есть какие-либо советы по использованию скорости в расчетах ускорения ввода-вывода в 2-мерной игре или пользовательском интерфейсе, мне было бы очень интересно услышать это!

Ответы [ 2 ]

2 голосов
/ 31 марта 2012

Вы можете использовать критически демпфированную пружину между краем и камерой. Вы заставляете: F = -w * w * x - 2 * w * v, где w - собственная частота пружины (попробуйте несколько различных значений, пока не получите то, что вам нравится) x - смещение от границы, а v - ток скорость.

2 голосов
/ 30 марта 2012

Cocos2d (и -x) имеют CCEaseIn и CCEaseOut, среди многих других .

Вы создаете их с параметром времени, поэтому не могли бы вы просто масштабировать время в зависимости от скорости вашей камеры?Чем быстрее он движется, тем быстрее он «отскакивает» назад с меньшим временем, отведенным на действие «легкость».Я бы не использовал для этого каких-либо причудливых реализаций анимации, так как у cocos2d уже есть много доступных действий по смягчению.

...