Как непрерывно перемещать спрайт между двумя объектами

У меня есть 3 спрайта A, B и C.

А и С - объекты...

B — это вражеские спрайты... дизайн ниже. Мне нужно, чтобы B постоянно перемещался между A и C.

A----------B----------C

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

ABcollision
{
if(Aistouched == YES)
{
Bvelocity.x = 5;  /// moves my sprite B right side
}
}

CBcollision
{
if(Cistouched == YES)
{
Bvelocity.x = -5; /// moves my sprite B right side
}
}

Мой метод обновления для обновления скорости:

   b2Vec2 dins = dinobody->GetLinearVelocity();
   dinobody->SetLinearVelocity(Bvelocity);

Приведенный выше код заставляет мой спрайт B двигаться влево и вправо только один раз.


person vishnu Simbu    schedule 04.08.2012    source источник
comment
Можете ли вы также предоставить код для вашего метода перемещения? проблема, вероятно, заключается в отсутствии предыдущего шага. создайте новую переменную с именем previousStep и каждый раз, прежде чем обновлять свою позицию с помощью Bvelocity, обновляйте previousStep с помощью Bvelocity и, если есть столкновение, перемещайте B на один шаг назад перед изменением скорости.   -  person Siamak M. Mirzaie    schedule 04.08.2012
comment
я обновил свои вопросы .. как можно переместиться на один шаг назад в box2d?   -  person vishnu Simbu    schedule 04.08.2012


Ответы (1)


Я считаю, что проблема, когда это работает только один раз, заключается в том, что вы никогда не сбрасываете свои BOOL, насколько я могу судить. Aistouched и Cistouched. Попробуйте добавить Aistouched = FALSE сразу после установки Bvelocity.x = 5; и того же для C.

person stenger96    schedule 10.08.2012