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

if (this.position.x {amp}lt; (alien.position.x   alien.width) {amp}amp;{amp}amp; (this.position.x   this.width) {amp}gt; alien.position.x {amp}amp;{amp}amp; this.position.y {amp}lt; (alien.position.y   alien.height) {amp}amp;{amp}amp; (this.position.y   this.height) {amp}gt; alien.position.y) { return true } else { return false } 

Это работает, но дело в том, что мне приходится перебирать всех пришельцев, чтобы проверить, не пересекаются ли они с прямоугольником А, не много ли пришельцев на холсте и, следовательно, производительность плохая. Есть ли другой способ улучшить эту логику или другой способ приблизиться к этому?

Это имеет проблемы с 9 квадратов (пришельцев) 1 пуля. Пули стреляют 2 раза в секунду, и каждая проходит через всех инопланетян.

Intel i5 9-го поколения, GTX 1060, 16 ГБ RAM