for (var g = 0; g < cArray.length - 1; g++) {
if (h !== g) {
if (
cArray[h].x + cArray[h].size > cArray[g].x - cArray[g].size &&
cArray[h].x - cArray[h].size < cArray[g].x + cArray[g].size &&
cArray[h].y + cArray[h].size > cArray[g].y - cArray[g].size &&
cArray[h].y - cArray[h].size < cArray[g].y + cArray[g].size
) {
cArray[h].dirX = cArray[g].dirX;
cArray[g].dirX = cArray[h].dirX;
cArray[h].dirY = cArray[g].dirY;
cArray[g].dirY = cArray[h].dirY;
}
}
}
Instead of bouncing off, they no-clip to each other, causing their directions to combine.