1
resposta

Lógica do código compartilhado

Para testar a colisão, utilizamos collideRectCircle (rx, ry, rw, rh, cx, cy, diameter), que na biblioteca do qual o pegamos, é:

collideRectCircle = function (rx, ry, rw, rh, cx, cy, diameter) {
  //2d
  // temporary variables to set edges for testing
  var testX = cx;
  var testY = cy;

  // which edge is closest?
  if (cx < rx){         testX = rx       // left edge
  }else if (cx > rx+rw){ testX = rx+rw  }   // right edge

  if (cy < ry){         testY = ry       // top edge
  }else if (cy > ry+rh){ testY = ry+rh }   // bottom edge

  // // get distance from closest edges
  var distance = this.dist(cx,cy,testX,testY)

  // if the distance is less than the radius, collision!
  if (distance <= diameter/2) {
    return true;
  }
  return false;
};

Sendo rx, ry e rw rerentes ao retângulo. E cx, cy e diameter referente ao círculo. Pegar só a função da biblioteca foi simples, mas eu quero entender a lógica do código acima, na biblioteca. Como cada linha leva adiante o cálculo da colisão, por favor?

1 resposta

Boa pergunta, ficarei no aguardo da resposta.