2013-07-10 2 views
0

Что я делаю, когда я перетаскиваю палец на экран, он сохраняет точки в массиве, используя ccTouchesMoved (CCSet * касается, событие CCEvent *).Переместить спрайт из точки в точку с той же скоростью

, который работает

Затем в методе обновления, если у него вызвать метод перемещения в моем единичном классе, который перемещает блок в первую точку в массиве затем удаляет его.

, который работает

Моя проблема в том, что, когда я пошевелить пальцем от точки А до B медленно по сравнению с тем, когда я пошевелить пальцем от точки А до Б быстрее, она сохраняет различное количество точек в массиве и движение не одно и то же.

Я пытаюсь высмеять тип управления полетом, где он всегда следует за вашей дорогой с одинаковой скоростью.

Является ли моя логика выключенной, и я собираюсь сделать это неправильно?

ответ

0

Определить константу, например

#define SPEED 50.0f 

Затем при перемещении через 2 точки вашего магазина, например

CCPoint p1 = ccp(10,20); 
CCPoint p2 = ccp(40,60); 

При создании Move, используйте

CCMoveTo* moveAction = CCMoveTo::create(p2, ccpDistance(p2,p1)/SPEED); 
0

Возможные решения:

  • Изменение операционных систем конфигурации относительно того, как информация от дигитайзером будет обработан.
  • Каждый раз, , прежде чем вы храните точку, проверьте другие точки в радиус. Если вы найдете там , отбросьте его.


Решение # 1, вероятно, будет лучше.

Решение # 2 ТОЛЬКО установить минимальное расстояние между точками и при перемещении пальца быстрее, расстояние между этими точками (возможно) увеличение, в зависимости от оборудования.

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