Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/418.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 击球测试球(物体)在击中棋盘之前被击中_Javascript - Fatal编程技术网

Javascript 击球测试球(物体)在击中棋盘之前被击中

Javascript 击球测试球(物体)在击中棋盘之前被击中,javascript,Javascript,我已经创建了一个函数来计算球对棋盘的击球次数。击球功能起作用,但它会在球击中棋盘之前计算击球次数 我做错什么了吗? //致命的 function hitTest(rect1, rect2) { if (rect1.x >= rect2.x + rect2.width || rect1.x + rect1.width <= rect2.x || rect1.y >= rect2.y + rect2.height || rect1.y + rect1.height &l

我已经创建了一个函数来计算球对棋盘的击球次数。击球功能起作用,但它会在球击中棋盘之前计算击球次数 我做错什么了吗? //致命的

function hitTest(rect1, rect2) {
    if (rect1.x >= rect2.x + rect2.width || rect1.x + rect1.width <= rect2.x 
|| 
rect1.y >= rect2.y + rect2.height || rect1.y + rect1.height <= rect2.y) {
        return false;
    }
    return true;
}

function doHitTest() {
    "use strict";
//board vs ball
    for (var i = balls.length - 1; i >= 0; i--) {
        if (hitTest(bounceBoard, balls[i])) {
            console.log("HIT");
            stage.removeChild(balls[i]);
            balls.splice(i, 1);
        }
    }
功能测试(rect1,rect2){
如果(rect1.x>=rect2.x+rect2.width | rect1.x+rect1.width=rect2.y+rect2.height | rect1.y+rect1.height=0;i--){
if(命中测试(弹跳板、球[i])){
控制台日志(“命中”);
舞台移除儿童(balls[i]);
球.拼接(i,1);
}
}

如果
x
y
分别是最左边和最上面的坐标,那么不清楚为什么需要为它们添加宽度和高度。如果(a.x=b.x+b.width),作为旁注,你的球是矩形的吗?听起来很奇怪。)使用
BallbundingRects
或其他什么(这意味着球周围的正方形)听起来好一点。注意:我建议你适当地插入你的条件句,这将使你避免与操作符优先级相关的问题,并增加代码的可读性。