Download
2d collision detection n.
Skip this Video
Loading SlideShow in 5 Seconds..
2D Collision Detection PowerPoint Presentation
Download Presentation
2D Collision Detection

2D Collision Detection

175 Views Download Presentation
Download Presentation

2D Collision Detection

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

  1. 2D Collision Detection For CSE 3902 By: Matt Boggus

  2. Outline • Collision tests • Pixel-pixel • Square-square • Axis-aligned bounding box (rectangle) testing • Collision detection loops • Exhaustive comparison • Static objects vs. dynamic objects

  3. Collision Detection tests

  4. Pixel-pixel test • Given sprite pixel data and position on screen, make a binary mask for each sprite • Detection test • (XOR == 1) • Not intersecting • (XOR == 0) AND (OR == 1) • Intersecting • Pro: Accurate • Con: Slow; requires working with image data Raster graphic sprites (left) and masks (right)

  5. Square-square test

  6. Square-square test

  7. Square-square top-bottom collision

  8. Square-square left-right collision

  9. Non-square collision example (values indicate top-bottom)

  10. Axis-aligned bounding box testing

  11. Axis-aligned bounding box testing

  12. XNA rectangle and methods • Given two rectangles rectangleA and rectangleB • Rectangle.Intersects(Rectangle) • Returns true if the rectangles are intersecting, otherwise false • Example call: rectangleA.Intersects(rectangleB); • Rectangle.Intersect Method (Rectangle, Rectangle) • Returns the area where the two rectangles overlap, anempty rectangle if there is no overlap • Example call: Rectangle.Intersect(rectangleA,rectangleB);

  13. Rectangle Intersect left-right

  14. Rectangle Intersect top-bottom

  15. Types of Collision loops

  16. Exhaustive comparison • Given mario, enemyList (length n), and blockList (length m), test • mario vs. enemyList[0] through [n-1] • mario vs. blockList[0] through [m-1] • enemyList[0] vs. enemyList[1] through [n-1] • enemyList[1] vs. enemyList[2] through [n-1] • … • blockList[0] vs. blockList[1] through [m-1] ?

  17. Static vs. Dynamic • Non-moving, or static, objects only need to be compared against dynamics, not other static objects • foreach static object, test against all dynamic objects • foreachdyamic object, test against all other dynamic objects, taking care not to duplicate tests