Create Presentation
Download Presentation

Download Presentation
## 2D Collision Detection

- - - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - - -

**2D Collision Detection**For CSE 3902 By: Matt Boggus**Outline**• Collision tests • Pixel-pixel • Square-square • Axis-aligned bounding box (rectangle) testing • Collision detection loops • Exhaustive comparison • Static objects vs. dynamic objects**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)**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);**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] ?**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