Я думаю, вам придется хранить некоторые данные в вашем спрайтовом объекте.
В бурундуке есть обратные вызовы, когда 2 объекта сначала касаются, а потом разделяются.
Начало: две фигуры только начали трогать первый раз в этом шаге. Верните true из обратного вызова, чтобы обработать столкновение как обычно, или false, чтобы Бурундук полностью игнорировал столкновение. Если вы вернете false, обратные вызовы до и после решения никогда не будут выполняться, но вы все равно получите отдельное событие, когда фигуры перестанут перекрываться.
Отдельно: две фигуры только что перестали касаться в первый раз на этом шаге.
Вы можете сделать так, чтобы у вашего объекта, который должен «сидеть внутри V», было по 2 bool по одному на каждую сторону V, чтобы оно было истинным, когда они «начинаются», и ложным, когда они разделялись.
Если они оба истинны, и объект isSleeping (прекратить движение) (я пришел из фона box2d, не уверен, что эквивалент бурундука есть).
Надеюсь, это поможет.