Как определить, что спрайт перестал двигаться

В chipmunk/cocos2d у меня есть классическая демонстрация прыгающего мяча, которая успешно работает с произвольным количеством мячей. Как узнать, что спрайт перестал двигаться (то есть мяч опустился на дно и «готово»)?

Я попытался объявить float prevX, prevY в классе Layer, чтобы я мог сравнить текущие x, y с предыдущими x, y в updateShape, но я не могу получить доступ к родителю спрайта.

         ((CustomLayer *)(sprite->parent))->preX = body->p.x;

Компилятор сообщает мне, что родитель спрайта защищен.

Спасибо.


person Rayfleck    schedule 10.06.2011    source источник


Ответы (1)


Если у вас включен алгоритм сна бурундука, вы можете просто вызвать cpBodyIsSleeping().

Бурундук выясняет, когда вещи простаивают, проверяя, что их кинетическая энергия ниже определенного порога, и увеличивая таймер. Если таймер достигает определенного значения, то он считает тело бездействующим.

person Scott Lembcke    schedule 10.06.2011
comment
Спасибо за ответ. Как включить этот алгоритм? Кроме того, я не нахожу вызова метода cpBodyIsSleeping(). Вы знаете, было ли это добавлено в недавнюю сборку? Спасибо. - person Rayfleck; 11.06.2011
comment
Нашел их здесь - person Rayfleck; 14.06.2011