Согласно документации разработчиков Android для функции intersect
:
Если указанный прямоугольник пересекает этот прямоугольник, верните true и установите для этого прямоугольника это пересечение , в противном случае верните false и не изменяйте этот прямоугольник.
Часть, на которую я акцентировал внимание, означает, что ваш параметр one
может быть изменен, если прямоугольники пересекаются - я предполагаю, как он каким-то образом устанавливается на null
, и в дальнейшем вызывает вашу ошибку в игровой цикл.
В документации также говорится:
Чтобы просто проверить пересечение, используйте intersects()
.
Описание метода Rect.intersects(Rect a, Rect b)
доступно здесь .
Если мы изменим ваш метод для использования Rect.intersects
, он будет выглядеть так:
public Boolean CollisionTest (Rect one, Rect two) {
return Rect.intersects(one, two);
}
В этот момент вы, вероятно, могли бы полностью избавиться от CollisionTest
и просто позвонить Rect.intersects
напрямую - если в какой-то момент вы не захотели реализовать собственное обнаружение столкновений. В этом случае вам просто нужно изменить этот метод. Это зависит от вас, на самом деле.