-
Notifications
You must be signed in to change notification settings - Fork 0
/
Hitbox.lua
36 lines (30 loc) · 1011 Bytes
/
Hitbox.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
Hitbox = {}
Hitbox.__index = Hitbox
setmetatable(Hitbox, {
__call = function (cls, ...)
local self = setmetatable({}, cls)
self:_init(...)
return self
end,
})
--position is upper-left corner
function Hitbox:_init(position, width, height)
self.position = position
self.width = width
self.height = height
end
function Hitbox:doesOverlapWith(hitbox)
local x_overlap = false
local y_overlap = false
if self.position.x < hitbox.position.x and self.position.x + self.width > hitbox.position.x then
x_overlap = true
elseif self.position.x < hitbox.position.x + hitbox.width and self.position.x + self.width > hitbox.position.x + hitbox.width then
x_overlap = true
end
if self.position.y < hitbox.position.y and self.position.y + self.height > hitbox.position.y then
y_overlap = true
elseif self.position.y < hitbox.position.y + hitbox.height and self.position.y + self.height > hitbox.position.y + hitbox.height then
y_overlap = true
end
return (x_overlap and y_overlap)
end