碰撞檢測:
1、圓形與矩形的碰撞檢測
函數ComputeCollision,當相對距離小於圓形半徑的時候為碰撞。
參數介紹(w:矩形的寬,h:矩形的高,r:圓形半徑,rx:圓形中心與矩形中心相對坐標X,ry:圓形中心與矩形中心相對坐標Y)
function ComputeCollision(w, h, r, rx, ry) { var dx = Math.min(rx, w * 0.5); var dx1 = Math.max(dx, -w * 0.5); var dy = Math.min(ry, h * 0.5); var dy1 = Math.max(dy, -h * 0.5); return (dx1 - rx) * (dx1 - rx) + (dy1 - ry) * (dy1 - ry) <= r * r; }
2、圓形坐標中心位置和矩形坐標中心位置
圓形坐標指鼠標的位置
修正圓形的位置,讓鼠標在圓心的中心位置
//圓心坐標 var radiusPosX = parseInt((event.clientX || event.x)); var radiusPosY = parseInt((event.clientY || event.y)); event = event || window.event; //讓鼠標在圓心的位置 circle.style.left = parseInt(radiusPosX - radius) + "px"; circle.style.top = parseInt(radiusPosY - radius) + "px";
矩形的長寬
矩形的中心位置是(相對距左+寬度,相對距頂+高度)。
//矩形的長寬 var rectW = rect.clientWidth; var rectH = rect.clientHeight; //矩形中心坐標 var rectPosX = parseInt(rect.offsetLeft) + rectW / 2; var rectPosY = parseInt(rect.offsetTop) + rectH / 2;