2D Collision Detection On Drag - Collidify.js

File Size: 6.96 KB
Views Total: 1785
Last Update:
Publish Date:
Official Website: Go to website
License: MIT
   
2D Collision Detection On Drag - Collidify.js

Collidify.js is a jQuery plugin for jQuery UI's draggable widget that can be used to determine whether two draggable objects collide and fire events accordingly.

How to use it:

1. The Collidify.js plugin required jQuery library and jQuery UI loaded in the page.

<link rel="stylesheet" href="/path/to/cdn/jquery-ui.min.css" />
<script src="/path/to/cdn/jquery.min.js"></script>
<script src="/path/to/cdn/jquery-ui.min.js"></script

2. Make an element draggable.

$(element).collidify(collisionOptions, jQueryUIdraggableOptions);

3. Detect if an element is draggable over (collide) another.

<div id="example">
  <div class="element-1">
    Element 1
  </div>
  <div class="element-2">
    Element 2
  </div>
</div>
$('.element-1').collidify({
  collides: [ $('.element-2')],
  onCollideEnter: function() {
    // do something
  },
  onCollideLeave: function() {
    // do something
  }
}, {
  containment: "#example"
})

4. Trigger the Collision events only if the element is completely dragged inside another element.

$('.element-1').collidify({
  collides: [ $('.element-2')],
  type: "inside",
  onCollideEnter: function() {
    // do something
  },
  onCollideLeave: function() {
    // do something
  }
}, {
  containment: "#example"
})

5. Add a custom border to the element when another element is dragged over it.

$('.element-1').collidify({
  border: [ $('.element-2')],
  borderStyle: "2px dashed blue",
  borderClass: ".border",
  onBorder: function() {
    // do something
  },
  onBorderRemove: function() {
    // do something
  },
}, {
  containment: "#example"
})

6. Restore the intial position after dropped.

$('.element-1').collidify({
  collides: [ $('.element-2')],
  revert: [ $('.element-2') ],
  onCollideEnter: function() {
    // do something
  },
  onCollideLeave: function() {
    // do something
  },
  onRevert: function() { 
    // do something
  },
}, {
  containment: "#example"
})

7. You can also pass the options as follows:

$('.element-1').collidify({
  border: [{
    element: $('.border'),
    type: "inside" 
  }],
  collides: [{
    element: $('.collide'),
    type: "enter"
  }],
  revert: [{
    element: $('.revert'),
    type: "inside"
  }]
}, {
  containment: "#example"
})

This awesome jQuery plugin is developed by Malmadork. For more Advanced Usages, please check the demo page or visit the official website.