2016-10-18 4 views
1

Я реализую игру на .Как замедлить все действия cocos2dx Игра

Теперь я реализовал «Replay моей игры» особенность (Игра показывает от начала)

Но я хочу повторить свою игру со скоростью 1x, 2x, 3x, 4x. При изменении скорости до 2x все действия (перемещение и поворот и т. Д.) Должны работать в отношении новой измененной переменной.

Как я могу это сделать, изменяя общую скорость CCAction?

Я хочу общее решение. Я знаю решение с переменными или планировщиком, , но я хочу общее решение.

ответ

1

Напишите свой класс, как CCEaseIn.

Переписать обновление (время плавания).

m_pInner->update(powf(time, m_fRate)); // this is what update() like in CCEaseIn 

Код может быть изменен следующим образом:

m_pInner->update(func(time)); 

FUNC (время с плавающей точкой) является функцией для изменения времени. как время/2, что означает 0,5x, время * 2 означает 2x. Вы можете сохранить некоторый параметр, чтобы сделать функцию более адаптивной.

2

Вы можете использовать следующий код, чтобы замедлить или быстро все планировщик и действие: -

float val = 2.0; // to fast 
val = 0.5; // to slow 

Director->getInstance()->setTimeScale(val); 

По умолчанию значение равно 1,0;

+0

Функция SetTimeScale (val) является планировщиком. Функция и val - это переменная времени, в течение которого работают все функции. Если это правда, я сделал это раньше. Я хочу решение, в котором все действия (например, переворачивание карты, вращение карточек, движение карт, отскакивание карт и все такие функции) меняют скорость, изменяя только одну переменную. –

+0

Пытаетесь ли вы пробраться выше? –