Вот мой пример, я не нашёл способ, поэтому просто разворачиваю его от блока и даже это вышло довольно стандартно(Через одно место).
Со всех сторон он разворачивается, кроме одной(Выделено).
Я бы желал просто останавливать его, как я это сделал в примере 2.
######1#######
if(====>blob.pos.x+blob.r/2+10 > block[i].pos.x <==== && blob.pos.x < block[i].pos.x+blockbg.width+blob.r-10 && blob.pos.y > block[i].pos.y-blob.r+10 && blob.pos.y < block[i].pos.y+blockbg.height+blob.r-10) {
mouseX = blob.pos.x;
mouseY = blob.pos.y;
}
#####2######
if(blob.pos.x > mapbg.width-blob.r) blob.pos.x = mapbg.width-blob.r;
if(blob.pos.y > mapbg.height-blob.r) blob.pos.y = mapbg.height-blob.r;
if(blob.pos.x < blob.r) blob.pos.x = blob.r;
if(blob.pos.y < blob.r) blob.pos.y = blob.r;