cc.interaction.lineRect
时间: 2023-12-05 17:06:39 浏览: 29
cc.interaction.lineRect 是 Cocos Creator 中一个用于判断直线和矩形是否相交的函数。它接受四个参数,分别是直线起点的坐标 (x1, y1)、直线终点的坐标 (x2, y2)、矩形左下角的坐标 (rectX, rectY) 和矩形的宽度和高度 (rectW, rectH)。如果直线和矩形相交,函数会返回 true,否则返回 false。
具体实现方式如下:
```javascript
cc.interaction.lineRect = function (x1, y1, x2, y2, rectX, rectY, rectW, rectH) {
var minX = Math.min(x1, x2);
var maxX = Math.max(x1, x2);
var minY = Math.min(y1, y2);
var maxY = Math.max(y1, y2);
if (rectX > maxX || rectX + rectW < minX || rectY > maxY || rectY + rectH < minY) {
return false;
}
var dx = x2 - x1;
var dy = y2 - y1;
var t1 = (rectX - x1) / dx;
var t2 = (rectX + rectW - x1) / dx;
var t3 = (rectY - y1) / dy;
var t4 = (rectY + rectH - y1) / dy;
var tmin = Math.min(Math.max(Math.min(t1, t2), Math.min(t3, t4)), 1);
var tmax = Math.max(Math.min(Math.max(t1, t2), Math.max(t3, t4)), 0);
if (tmax < tmin) {
return false;
}
var intersectX = x1 + dx * tmin;
var intersectY = y1 + dy * tmin;
return true;
};
```
其中,`x1`、`y1`、`x2`、`y2` 分别为直线的起点和终点坐标,`rectX`、`rectY`、`rectW`、`rectH` 分别为矩形的左下角坐标和宽高。函数将直线和矩形平移至以直线起点为原点,然后计算直线在 x 方向和 y 方向上与矩形相交的比例,取比例的最大值和最小值,判断它们的关系是否满足直线和矩形相交的条件。如果相交,则返回 true;否则返回 false。