Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //collision test function. Returns true if sprites are touching.
- bool collision(sprite_t sprite_1, sprite_t sprite_2){
- //Let's examine the x axis first:
- //If the leftmost or rightmost point of the first sprite lies somewhere inside the second, continue.
- if( (sprite_1.x >= sprite_2.x && sprite_1.x <= (sprite_2.x + sprite_2.w)) ||
- ((sprite_1.x + sprite_1.w) >= sprite_2.x && (sprite_1.x + sprite_1.w) <= (sprite_2.x + sprite_2.w)) ){
- //Now we look at the y axis:
- if( (sprite_1.y >= sprite_2.y && sprite_1.y <= (sprite_2.y + sprite_2.h)) ||
- ((sprite_1.y + sprite_1.h) >= sprite_2.y && (sprite_1.y + sprite_1.h) <= (sprite_2.y + sprite_2.h)) ){
- //The sprites appear to overlap.
- return true;
- }
- }
- //This algorithm will not detect collisions if sprite_2 is smaller than sprite_1.
- //To solve this problem, we'll check again, using sprite_2 in place of sprite_1.
- if( (sprite_2.x >= sprite_1.x && sprite_2.x <= (sprite_1.x + sprite_1.w)) ||
- ((sprite_2.x + sprite_2.w) >= sprite_1.x && (sprite_2.x + sprite_2.w) <= (sprite_1.x + sprite_1.w)) ){
- //Now we look at the y axis:
- if( (sprite_2.y >= sprite_1.y && sprite_2.y <= (sprite_1.y + sprite_1.h)) ||
- ((sprite_2.y + sprite_2.h) >= sprite_1.y && (sprite_2.y + sprite_2.h) <= (sprite_1.y + sprite_1.h)) ){
- //The sprites appear to overlap.
- return true;
- }
- }
- //The sprites do not overlap:
- return false;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement