Skip to content

Commit

Permalink
better enemy projectile collision, 0.2.0
Browse files Browse the repository at this point in the history
  • Loading branch information
parameterized committed Feb 2, 2019
1 parent cdbd91b commit faf61d0
Show file tree
Hide file tree
Showing 11 changed files with 172 additions and 3 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@

Open World RPG

*Current version: 0.1.1-dev*<br>
*Current version: 0.2.0*<br>
*Uses Love2D version 11.2.0*

![](https://i.imgur.com/rF9idF9.png)
Expand All @@ -26,4 +26,4 @@ If you're on Windows, the easiest way to run is to drag the folder containing ma
- Tab to toggle inventory
- M to toggle map
- L to toggle levels/stats
- F1 to toggle debug info
- F1 to toggle debug view
17 changes: 17 additions & 0 deletions entityDefs/ant.lua
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ for _, sc in ipairs{'server', 'client'} do
self.body = love.physics.newBody(self.realm.physics.world, self.x, self.y, 'dynamic')
self.shapes = {}
self.fixtures = {}

-- collision
local shape = love.physics.newCircleShape(8)
table.insert(self.shapes, shape)
local fixture = love.physics.newFixture(self.body, shape, 1)
Expand All @@ -39,6 +41,21 @@ for _, sc in ipairs{'server', 'client'} do
if sc == 'client' then
fixture:setMask(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)
end

-- projectile damage
local img = gfx.enemies.ant
local shape = love.physics.newRectangleShape(
0, -img:getHeight()/2, img:getWidth(), img:getHeight())
table.insert(self.shapes, shape)
local fixture = love.physics.newFixture(self.body, shape, 1)
table.insert(self.fixtures, fixture)
fixture:setUserData(self)
fixture:setCategory(3)
if sc == 'client' then
fixture:setMask(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)
end
fixture:setSensor(true)

self.body:setFixedRotation(true)
self.body:setLinearDamping(10)
return self.base.spawn(self)
Expand Down
19 changes: 18 additions & 1 deletion entityDefs/godex.lua
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ for _, sc in ipairs{'server', 'client'} do
self.body = love.physics.newBody(self.realm.physics.world, self.x, self.y, 'dynamic')
self.shapes = {}
self.fixtures = {}

-- collision
local shape = love.physics.newCircleShape(8)
table.insert(self.shapes, shape)
local fixture = love.physics.newFixture(self.body, shape, 1)
Expand All @@ -39,6 +41,21 @@ for _, sc in ipairs{'server', 'client'} do
if sc == 'client' then
fixture:setMask(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)
end

-- projectile damage
local img = gfx.enemies.godex.body1
local shape = love.physics.newRectangleShape(
0, -img:getHeight()/2, img:getWidth(), img:getHeight())
table.insert(self.shapes, shape)
local fixture = love.physics.newFixture(self.body, shape, 1)
table.insert(self.fixtures, fixture)
fixture:setUserData(self)
fixture:setCategory(3)
if sc == 'client' then
fixture:setMask(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)
end
fixture:setSensor(true)

self.body:setFixedRotation(true)
self.body:setLinearDamping(10)
return self.base.spawn(self)
Expand Down Expand Up @@ -185,7 +202,7 @@ function godex.client:draw()

local img = gfx.enemies.godex.aura
love.graphics.draw(img, 1, -19, 0, 1, 1,
lume.round(img:getWidth()/2), lume.round(img:getHeight()/2))
lume.round(img:getWidth()/2), lume.round(img:getHeight()/2))
local bodyFrame = (time/3) % 1 < 0.1 and 1 or 2
local img = gfx.enemies.godex['body' .. bodyFrame]
love.graphics.draw(img, 0, 0, 0, 1, 1, 11, 30)
Expand Down
16 changes: 16 additions & 0 deletions entityDefs/mudskipper.lua
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ for _, sc in ipairs{'server', 'client'} do
self.body = love.physics.newBody(self.realm.physics.world, self.x, self.y, 'dynamic')
self.shapes = {}
self.fixtures = {}

-- collision
local shape = love.physics.newCircleShape(8)
table.insert(self.shapes, shape)
local fixture = love.physics.newFixture(self.body, shape, 1)
Expand All @@ -39,6 +41,20 @@ for _, sc in ipairs{'server', 'client'} do
if sc == 'client' then
fixture:setMask(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)
end

-- projectile damage
local _, _, w, h = anims.enemies.mudskipper.quads[1]:getViewport()
local shape = love.physics.newRectangleShape(0, -h/2, w, h)
table.insert(self.shapes, shape)
local fixture = love.physics.newFixture(self.body, shape, 1)
table.insert(self.fixtures, fixture)
fixture:setUserData(self)
fixture:setCategory(3)
if sc == 'client' then
fixture:setMask(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)
end
fixture:setSensor(true)

self.body:setFixedRotation(true)
self.body:setLinearDamping(10)
return self.base.spawn(self)
Expand Down
16 changes: 16 additions & 0 deletions entityDefs/mudskipperEvolved.lua
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ for _, sc in ipairs{'server', 'client'} do
self.body = love.physics.newBody(self.realm.physics.world, self.x, self.y, 'dynamic')
self.shapes = {}
self.fixtures = {}

-- collision
local shape = love.physics.newCircleShape(8)
table.insert(self.shapes, shape)
local fixture = love.physics.newFixture(self.body, shape, 1)
Expand All @@ -39,6 +41,20 @@ for _, sc in ipairs{'server', 'client'} do
if sc == 'client' then
fixture:setMask(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)
end

-- projectile damage
local _, _, w, h = anims.enemies.mudskipperEvolved.quads[1]:getViewport()
local shape = love.physics.newRectangleShape(0, -h/2, w, h)
table.insert(self.shapes, shape)
local fixture = love.physics.newFixture(self.body, shape, 1)
table.insert(self.fixtures, fixture)
fixture:setUserData(self)
fixture:setCategory(3)
if sc == 'client' then
fixture:setMask(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)
end
fixture:setSensor(true)

self.body:setFixedRotation(true)
self.body:setLinearDamping(10)
return self.base.spawn(self)
Expand Down
17 changes: 17 additions & 0 deletions entityDefs/newMonster1.lua
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ for _, sc in ipairs{'server', 'client'} do
self.body = love.physics.newBody(self.realm.physics.world, self.x, self.y, 'dynamic')
self.shapes = {}
self.fixtures = {}

-- collision
local shape = love.physics.newCircleShape(8)
table.insert(self.shapes, shape)
local fixture = love.physics.newFixture(self.body, shape, 1)
Expand All @@ -39,6 +41,21 @@ for _, sc in ipairs{'server', 'client'} do
if sc == 'client' then
fixture:setMask(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)
end

-- projectile damage
local img = gfx.enemies.newMonster1
local shape = love.physics.newRectangleShape(
0, -img:getHeight()/2, img:getWidth(), img:getHeight())
table.insert(self.shapes, shape)
local fixture = love.physics.newFixture(self.body, shape, 1)
table.insert(self.fixtures, fixture)
fixture:setUserData(self)
fixture:setCategory(3)
if sc == 'client' then
fixture:setMask(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)
end
fixture:setSensor(true)

self.body:setFixedRotation(true)
self.body:setLinearDamping(10)
return self.base.spawn(self)
Expand Down
17 changes: 17 additions & 0 deletions entityDefs/newMonster2.lua
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ for _, sc in ipairs{'server', 'client'} do
self.body = love.physics.newBody(self.realm.physics.world, self.x, self.y, 'dynamic')
self.shapes = {}
self.fixtures = {}

-- collision
local shape = love.physics.newCircleShape(8)
table.insert(self.shapes, shape)
local fixture = love.physics.newFixture(self.body, shape, 1)
Expand All @@ -39,6 +41,21 @@ for _, sc in ipairs{'server', 'client'} do
if sc == 'client' then
fixture:setMask(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)
end

-- projectile damage
local img = gfx.enemies.newMonster2
local shape = love.physics.newRectangleShape(
0, -img:getHeight()/2, img:getWidth(), img:getHeight())
table.insert(self.shapes, shape)
local fixture = love.physics.newFixture(self.body, shape, 1)
table.insert(self.fixtures, fixture)
fixture:setUserData(self)
fixture:setCategory(3)
if sc == 'client' then
fixture:setMask(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)
end
fixture:setSensor(true)

self.body:setFixedRotation(true)
self.body:setLinearDamping(10)
return self.base.spawn(self)
Expand Down
18 changes: 18 additions & 0 deletions entityDefs/sorcerer.lua
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ for _, sc in ipairs{'server', 'client'} do
self.body = love.physics.newBody(self.realm.physics.world, self.x, self.y, 'dynamic')
self.shapes = {}
self.fixtures = {}

-- collision
local shape = love.physics.newCircleShape(8)
table.insert(self.shapes, shape)
local fixture = love.physics.newFixture(self.body, shape, 1)
Expand All @@ -39,6 +41,22 @@ for _, sc in ipairs{'server', 'client'} do
if sc == 'client' then
fixture:setMask(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)
end

-- projectile damage
local img = gfx.enemies.sorcerer
local shape = love.physics.newRectangleShape(
0, -img:getHeight()/2, img:getWidth(), img:getHeight())
table.insert(self.shapes, shape)
local fixture = love.physics.newFixture(self.body, shape, 1)
table.insert(self.fixtures, fixture)
fixture:setUserData(self)
fixture:setCategory(3)
if sc == 'client' then
fixture:setMask(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)
end
fixture:setSensor(true)


self.body:setFixedRotation(true)
self.body:setLinearDamping(10)
return self.base.spawn(self)
Expand Down
17 changes: 17 additions & 0 deletions entityDefs/spoder.lua
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ for _, sc in ipairs{'server', 'client'} do
self.body = love.physics.newBody(self.realm.physics.world, self.x, self.y, 'dynamic')
self.shapes = {}
self.fixtures = {}

-- collision
local shape = love.physics.newCircleShape(8)
table.insert(self.shapes, shape)
local fixture = love.physics.newFixture(self.body, shape, 1)
Expand All @@ -39,6 +41,21 @@ for _, sc in ipairs{'server', 'client'} do
if sc == 'client' then
fixture:setMask(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)
end

-- projectile damage
local img = gfx.enemies.spoder
local shape = love.physics.newRectangleShape(
0, -img:getHeight()/2, img:getWidth(), img:getHeight())
table.insert(self.shapes, shape)
local fixture = love.physics.newFixture(self.body, shape, 1)
table.insert(self.fixtures, fixture)
fixture:setUserData(self)
fixture:setCategory(3)
if sc == 'client' then
fixture:setMask(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)
end
fixture:setSensor(true)

self.body:setFixedRotation(true)
self.body:setLinearDamping(10)
return self.base.spawn(self)
Expand Down
17 changes: 17 additions & 0 deletions entityDefs/stingy.lua
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ for _, sc in ipairs{'server', 'client'} do
self.body = love.physics.newBody(self.realm.physics.world, self.x, self.y, 'dynamic')
self.shapes = {}
self.fixtures = {}

-- collision
local shape = love.physics.newCircleShape(8)
table.insert(self.shapes, shape)
local fixture = love.physics.newFixture(self.body, shape, 1)
Expand All @@ -39,6 +41,21 @@ for _, sc in ipairs{'server', 'client'} do
if sc == 'client' then
fixture:setMask(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)
end

-- projectile damage
local img = gfx.enemies.stingy
local shape = love.physics.newRectangleShape(
0, -img:getHeight()/2, img:getWidth(), img:getHeight())
table.insert(self.shapes, shape)
local fixture = love.physics.newFixture(self.body, shape, 1)
table.insert(self.fixtures, fixture)
fixture:setUserData(self)
fixture:setCategory(3)
if sc == 'client' then
fixture:setMask(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)
end
fixture:setSensor(true)

self.body:setFixedRotation(true)
self.body:setLinearDamping(10)
return self.base.spawn(self)
Expand Down
17 changes: 17 additions & 0 deletions entityDefs/zombie.lua
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,8 @@ for _, sc in ipairs{'server', 'client'} do
self.body = love.physics.newBody(self.realm.physics.world, self.x, self.y, 'dynamic')
self.shapes = {}
self.fixtures = {}

-- collision
local shape = love.physics.newCircleShape(8)
table.insert(self.shapes, shape)
local fixture = love.physics.newFixture(self.body, shape, 1)
Expand All @@ -39,6 +41,21 @@ for _, sc in ipairs{'server', 'client'} do
if sc == 'client' then
fixture:setMask(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)
end

-- projectile damage
local img = gfx.enemies.zombie
local shape = love.physics.newRectangleShape(
0, -img:getHeight()/2, img:getWidth(), img:getHeight())
table.insert(self.shapes, shape)
local fixture = love.physics.newFixture(self.body, shape, 1)
table.insert(self.fixtures, fixture)
fixture:setUserData(self)
fixture:setCategory(3)
if sc == 'client' then
fixture:setMask(1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16)
end
fixture:setSensor(true)

self.body:setFixedRotation(true)
self.body:setLinearDamping(10)
return self.base.spawn(self)
Expand Down

0 comments on commit faf61d0

Please sign in to comment.