Difference between revisions of "BoundingBox.lua"
m (Actually follow guidelines and have the properities be at the end of the article.) |
|||
(One intermediate revision by the same user not shown) | |||
Line 1: | Line 1: | ||
− | This script is used for | + | This script is used for axis-aligned bounding box collision detection. It will check whether two rectangular objects overlap. It returns true if they do, and false otherwise. |
− | This form of collision detection is not suited for games that have lots of circles | + | This form of collision detection is not suited for games that have lots of circles, non-rectangular shapes, or rotated rectangles, since space not filled by those shapes may still be part of the collision rectangle, or alternatively there may be parts that lie outside of it. |
+ | |||
+ | However, this should work fine for games such as Space Invaders clones. | ||
<source lang="lua"> | <source lang="lua"> | ||
− | -- Collision detection function | + | -- Collision detection function; |
− | -- Returns true if two boxes overlap, false if they don't | + | -- Returns true if two boxes overlap, false if they don't; |
− | -- x1,y1 are the left | + | -- x1,y1 are the top-left coords of the first box, while w1,h1 are its width and height; |
− | -- x2,y2,w2 & h2 are the same, but for the second box | + | -- x2,y2,w2 & h2 are the same, but for the second box. |
function CheckCollision(x1,y1,w1,h1, x2,y2,w2,h2) | function CheckCollision(x1,y1,w1,h1, x2,y2,w2,h2) | ||
return x1 < x2+w2 and | return x1 < x2+w2 and | ||
Line 17: | Line 19: | ||
[[Category:Snippets]] | [[Category:Snippets]] | ||
+ | {{#set:LOVE Version=any}} | ||
+ | {{#set:Description=Collision checking function based on axis-aligned bounding boxes.}} |
Revision as of 17:14, 11 November 2016
This script is used for axis-aligned bounding box collision detection. It will check whether two rectangular objects overlap. It returns true if they do, and false otherwise.
This form of collision detection is not suited for games that have lots of circles, non-rectangular shapes, or rotated rectangles, since space not filled by those shapes may still be part of the collision rectangle, or alternatively there may be parts that lie outside of it.
However, this should work fine for games such as Space Invaders clones.
-- Collision detection function;
-- Returns true if two boxes overlap, false if they don't;
-- x1,y1 are the top-left coords of the first box, while w1,h1 are its width and height;
-- x2,y2,w2 & h2 are the same, but for the second box.
function CheckCollision(x1,y1,w1,h1, x2,y2,w2,h2)
return x1 < x2+w2 and
x2 < x1+w1 and
y1 < y2+h2 and
y2 < y1+h1
end