Предполагая, что ваша проблема связана с постоянным пересечением, вы можете ввести простой флаг, который помечает пересечение.
bool isBirdIntersectingPipe = false;
Тогда в игровом цикле вы можете обнаружить начало пересечения следующим образом.
if (birdRect.intersects(pipeRect)) // Intersection this frame.
{
if (!isBirdIntersectingPipe) // No intersection last frame, so this is the beginning.
{
++score;
isBirdIntersectingPipe = true;
}
// Still intersecting, so do nothing.
}
else // No intersection this frame.
{
isBirdIntersectingPipe = false;
}
В идеале у вас должна быть специальная система столкновений или даже физика, которая будет отслеживать все объекты на сцене, но в этом случае достаточно простого решения, подобного этому.