2 div가 겹치는 경우를 감지하고, 그렇다면 사각형 1의 오른쪽과 사각형 2의 왼쪽 사이의 거리, 사각형 1의 상단 및 사각형 2의 바닥 사이의 거리를 확인합니다. , 요법. 어떤 이유 자바가 두 div 사이의 충돌 축을 감지 할 수 없습니다.
if (rect1.right > rect2.left &&
rect1.left < rect2.right &&
rect1.top < rect2.bottom &&
rect1.bottom > rect2.top) {
//collision detected.
var dtop = Math.abs(rect1.top - rect2.bottom);
var dbot = Math.abs(rect1.bottom - rect2.top);
var dright =Math.abs(rect1.right - rect2.left);
var dleft = Math.abs(rect1.left - rect2.right);
var closestSide = Math.min(dtop,dbot,dright,dleft);
if (closestSide == dleft || dright) {
collisionAxis = "x";
}
if (closestSide == dtop || dbot) {
collisionAxis = "y";
}
alert("collisionAxis: " + collisionAxis);
return collisionAxis;
}
는 collisionAxis 항상 "Y"
even when closestSide == dleft || dright
, collisionAxis 설정해야 할 설정되는 "X"... 여기
JSFiddle의 예는이다. 내 DetectCollision
함수의 변수 collisionAxis
은 closestSide = dright
부터 흰색 직사각형이 검은 사각형과 충돌 할 때 "x"로 설정해야하지만 어떻게 든 "y"로 설정됩니다.
아무도 말해 줄 수 있습니까?
편집 : 추가 JSFiddle 링크. –