矩形和矩形圆的碰撞检测

// 检测圆和矩形的碰撞 矩形的宽,高,中心点x,y  圆的半径,中心点血,y
    IsComputeCollision(jw, jh,jx,jy, rr, rx, ry) {

        var _rx = rx - jx;
        var _ry = ry - jy;


        var dx = Math.min(_rx, jw * 0.5);
        var dx1 = Math.max(dx, -jw * 0.5);
        var dy = Math.min(_ry, jh * 0.5);
        var dy1 = Math.max(dy, -jh * 0.5);
        return (dx1 - _rx) * (dx1 - _rx) + (dy1 - _ry) *         (dy1 - _ry) <= rr * rr;
    },

    // 检测矩形,矩形碰撞
    isCollsionWithRect(rect1,rect2){
        var x1 = rect1.x
        var y1 = rect1.y
        var w1 = rect1.width
        var h1 = rect1.height

        var x2 = rect2.x
        var y2 = rect2.y
        var w2 = rect2.width
        var h2 = rect2.height

        if (x1 > x2 && x1 > x2 + w2) {  
            return -1;  
        } else if (x1 < x2 && x1 + w1 < x2) {  
            return -1;  
        } else if (y1 > y2 && y1 > y2 + h2) {  
            return -1;  
        } else if (y1 < y2 && y1 + h1 < y2) {  
            return -1;  
        }  

        if (Math.abs(parseInt(x1+w1)-parseInt(x2)) <= 3) {
            // 左侧
            return 2
        }
        
        if (Math.abs(parseInt(x2+w2)-parseInt(x1)) <= 3 ) {
            // 右侧
            return 3
        }

        if(Math.abs(parseInt(y1+h1)-parseInt(y2)) <= 3 ){
            // 下边
            return 1
        }

        if (Math.abs(parseInt(y2+h2) -parseInt(y1) <= 3)) {
            // 上边
            return 0
        }
        return 5
    },
    

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值