jQuery/JavaScript collision detection

前端 未结 7 2282
情话喂你
情话喂你 2020-11-22 04:49

How to detect if two

elements have collided?

The two divs are simple coloured boxes travelling perpendicular to each other, so no complicate

7条回答
  •  没有蜡笔的小新
    2020-11-22 05:24

    EDIT: I have written a blog post on my website. Here a link to it. http://area36.nl/2014/12/creating-your-own-collision-detection-function-in-javascript/

    Well I had the same problem but thanks to the answer of Oscar Godson I got a function that works. I used Jquery for easy coding and because i'm lazy ;p. I put the function in a other function that is fired every second so keep that in mind.

    function collidesWith (element1, element2) {
        var Element1 = {};
        var Element2 = {};
    
        Element1.top = $(element1).offset().top;
        Element1.left = $(element1).offset().left;
        Element1.right = Number($(element1).offset().left) + Number($(element1).width());
        Element1.bottom = Number($(element1).offset().top) + Number($(element1).height());
    
        Element2.top = $(element2).offset().top;
        Element2.left = $(element2).offset().left;
        Element2.right = Number($(element2).offset().left) + Number($(element2).width());
        Element2.bottom = Number($(element2).offset().top) + Number($(element2).height());
    
        if (Element1.right > Element2.left && Element1.left < Element2.right && Element1.top < Element2.bottom && Element1.bottom > Element2.top) {
            // Do your stuff here
        }
    }
    

    What it does is basically it gets all the values of element1 and then get all the values of element2. Then with the help of some calculations it figures out all the values. Then in the if statement it compares the square of element1 to the square of element2. If the values of element1 are between the left, right, top and bottom values of element2. If that is true the code in the bottom is executed.

提交回复
热议问题