使用CSS动画旋转的图像之间的碰撞检测

时间:2013-11-23 13:24:06

标签: javascript jquery css collision detection

我正在使用CSS动画和jQuery在十字路口(顶视图)中移动汽车来模拟驾驶执照测验。用户必须通过点击汽车来选择交叉订单。

示例图片:http://i40.tinypic.com/717fc9.jpg

每辆车都有属性和动画,例如:蓝色车辆右转(与图像不同):

#auto-b {
    left: 320px;
    top: 150px;
    -webkit-transform: rotate(180deg);
}

.animated #auto-b {
    -webkit-animation-name: move-b;
    -webkit-animation-fill-mode: forwards;
}

@-webkit-keyframes move-b {

    30% {
        left: 260px;
        top: 150px;
        -webkit-transform: rotate(180deg);
    }
    60% {
        left: 214px;
        top: 120px;
        -webkit-transform: rotate(270deg);
    }

    100% {
        top: 30px;
        left: 214px;
        -webkit-transform: rotate(270deg);
    }
}

我不知道的是,如果两辆汽车旋转(转动),我怎么能检测到它是否发生碰撞。

播放按钮功能:

$('#play').on('click', play);

function play(){    
    $('.auto').removeClass('selected');
    $('#incrocio').addClass('animated');    
    interval = setInterval(crash,1);
}

碰撞功能(仅适用于红色和绿色汽车碰撞,因为它们不会旋转):

function crash(){

    var autoA = $('#auto-a').position();    
    var autoB = $('#auto-b').position();
    var autoC = $('#auto-c').position();    
    var top1 = autoA.top+10;
    var top2 = autoA.top-10;
    var left1 = autoA.left+10;
    var left2 = autoA.left-10;  

    if (top1 > autoC.top && top2 < autoC.top && left1 > autoC.left && left2 < autoC.left) {
        console.log("boom");
        $('#incrocio').removeClass('animated');
        alert("BOOM!");
        i = 1;
        carsArray = [];
        clearInterval(interval);
    }
}

是否有一种简单的方法可以检测每个具有“.auto”类的图像之间的任何类型的碰撞?

我还想过计算矩形的每个点并检查它们中是否有任何一个在另一个矩形(汽车)内。 但是我只能得到左上角而不是其他

任何解决方案?

提前致谢!

1 个答案:

答案 0 :(得分:0)

使用Jquery / javascript绘制汽车的动画。使用css3动画是检测事件或检测碰撞的非常糟糕的选择。

[解决]

使用jquery时使用下面的插件以便于检测。

http://plugins.jquery.com/overlaps/

http://yckart.github.io/jquery.overlaps.js/

[解决]

希望你理解我的观点。