Download presentation
Presentation is loading. Please wait.
Published byEvan Terry Modified over 6 years ago
1
2D Collision Detection For CSE 3902 By: Matt Boggus
2
Outline Collision tests Collision detection loops 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, an empty 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 foreach dynamic object, test against all other dynamic objects, taking care not to duplicate tests
18
More resources A few pseudocode examples on gamedev stackexchange
Also look into tutorials on XNA subpage
Similar presentations
© 2024 SlidePlayer.com. Inc.
All rights reserved.