iTakeo

球形物体碰撞检测。

球形物体碰撞检测。

var dx = objectB.x - objectA.x,
    dy = objectB.y - objectB.y,
    dist = Math.sqrt(dx * dx + dy * dy);

if ( dist < objectA.radius + objectB.radius ){
    碰撞
}
01.
02.
03.
04.
05.
06.
07.

举个例子:

;(function(){
    var ballA = {},w = {};
    var d1 = document.querySelector('.moveBall3'),
        d2 = document.querySelector('.moveBall4');
    w.a = d1.offsetWidth/2;  
    w.b = d2.offsetWidth/2;  
    ballA.x=d1.getBoundingClientRect().left + pageXOffset+ w.a; 
    ballA.y=d1.getBoundingClientRect().top  + pageYOffset+ w.a; 
    wrapBox9.onmousemove = function(ev){
        d2.style.left = ev.pageX - this.offsetLeft - w.b + 'px'; 
        d2.style.top  = ev.pageY - this.offsetTop-  w.b + 'px';  
        var dx=(d2.getBoundingClientRect().left + w.b + pageXOffset)-ballA.x,
            dy=(d2.getBoundingClientRect().top  + w.b + pageYOffset)-ballA.y,
            dist=Math.sqrt(dx*dx+dy*dy);
        if(dist<=w.a+w.b){
            //碰到了
        }
    };
})();
01.
02.
03.
04.
05.
06.
07.
08.
09.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
碰我

多个物体:

2016/10/13 10 / /
标签:  暂无标签

评论回复

  1. 回复 55

    你好

  2. 回复 55

    我去

  3. 回复 55

    😛 还帅

  4. 回复 Bruce

    😮 😮 666@霸

  5. 回复 匿名

    😀 奈斯

  6. 回复 匿名

    😳 😀 能不能写个反弹的

  7. 回复 匿名

    你会 :mrgreen:

  8. 回复 老胡

    很好 非常好

  9. 回复 匿名

    😎 ikudscssdsa的份上

  10. 回复 ww

    🙂 你好

验证码: 3 + 7 =

回到顶部