두 개의 원이 충돌 감지를 작성했습니다. 하지만 제가 정말 원하는 것은 기본 개체 만 보여주는 아래의 이미지처럼, 그 표면의 절반에 다른 물체와 충돌 할 것입니다 : 반 cricle면이 서로 다른 방향에서 다른 원과 충돌합니다 html5 캔버스에서 반원의 충돌을 감지하는 방법은 무엇입니까?
. 어떻게 이것을 시뮬레이션하는 함수를 작성해야합니까? 나는 두 개의 원 감지 순간에 발견 한 무엇은 다음과 같이이다 :
var dx = circle1.x - circle2.x;
var dy = circle1.y - circle2.y;
var distance = Math.sqrt(dx * dx + dy * dy);
if (distance < circle1.radius + circle2.radius) {
// collision detected!
}
하지만 어떻게 주요 원의 절반에 대해
을 포함됩니다? 어쨌든 원 표면의 일부만이 충돌에 관여합니까? 수학 만 말하십시오. 원/2 도가 충돌을 감지합니까?
사이를 확인해야합니다. 모든 방향으로 이동합니다. 평평한 부분의 충돌은 감지하지 못합니다. – newguy
그러면 더 어렵습니다. 제가 알아낼 수있는 것은 두 개의 가장자리 점 (현재 경우에는 'centerX, centerY + -radius'이지만 수직선이 아닌 경우 까다로워집니다)을 결정하고 회전 각도로 a 모양. 그런 다음 임의의 X, Y 포인트가 반원 내에 있는지 확인할 수 있습니다. –
하지만 충돌은 일반적으로 힘든 작업이므로 단순한 모양을 넘어서는 복잡성이 증가하고 싶다면 관련 라이브러리를 찾아 보시기 바랍니다. 예를 들어, PhaserJS는 훌륭한 물리 엔진을 가지고 있습니다. –