Browse Source

fixed enemy movement and firing bug

master
NCLanceman 7 months ago
parent
commit
3b710c803e
  1. 24
      entities/enemy.lua
  2. 2
      main.lua

24
entities/enemy.lua

@ -2,9 +2,6 @@
require("blaster") require("blaster")
Enemy = Object:extend() Enemy = Object:extend()
local fireTime = love.timer.getTime()
local enemyBullets
--int x, y, radius --int x, y, radius
--playableArea -> {int[2]} --playableArea -> {int[2]}
function Enemy:new(x, y, radius, playableArea) function Enemy:new(x, y, radius, playableArea)
@ -36,8 +33,9 @@ function Enemy:new(x, y, radius, playableArea)
} }
self.move_bounds = self:setMoveBounds() self.move_bounds = self:setMoveBounds()
print("Move Bounds: ", self.move_bounds[1], " , ", self.move_bounds[2]) --print("Move Bounds: ", self.move_bounds[1], " , ", self.move_bounds[2])
enemyBullets = {} self.fireTime = love.timer.getTime()
self.enemyBullets = {}
end end
function Enemy:draw() function Enemy:draw()
@ -45,7 +43,7 @@ function Enemy:draw()
love.graphics.rectangle("line", self.hitbox[1], self.hitbox[3], self.width, self.height) love.graphics.rectangle("line", self.hitbox[1], self.hitbox[3], self.width, self.height)
love.graphics.draw(self.image, self.x, self.y, 0, 1, 1) love.graphics.draw(self.image, self.x, self.y, 0, 1, 1)
for _, v in ipairs(enemyBullets) do for _, v in ipairs(self.enemyBullets) do
v:draw() v:draw()
end end
end end
@ -61,17 +59,17 @@ function Enemy:update(dt, player)
--movement --movement
if self.hitbox[1] < self.move_bounds[1] then if self.hitbox[1] < self.move_bounds[1] then
self.x = self.move_bounds[1] --self.x = self.move_bounds[1]
self.speed = -self.speed self.speed = -self.speed
elseif self.hitbox[2] > self.move_bounds[2] then elseif self.hitbox[2] > self.move_bounds[2] then
self.x = self.move_bounds[2] - self.width - self.x_offset --self.x = self.move_bounds[2] - self.width - self.x_offset
self.speed = -self.speed self.speed = -self.speed
end end
--firing! --firing!
self:fire() self:fire()
for i, v in ipairs(enemyBullets) do for i, v in ipairs(self.enemyBullets) do
v:update(dt) v:update(dt)
if v.y > window_height then if v.y > window_height then
@ -80,7 +78,7 @@ function Enemy:update(dt, player)
if v.destroy == true then if v.destroy == true then
--print("Enemy Bullet Removed! Bullets in table remaining: ", #enemyBullets) --print("Enemy Bullet Removed! Bullets in table remaining: ", #enemyBullets)
table.remove(enemyBullets, i) table.remove(self.enemyBullets, i)
end end
v:checkCollision(player) v:checkCollision(player)
@ -95,9 +93,9 @@ end
function Enemy:fire() function Enemy:fire()
--local fire_origin = { self.x + 26, self.y + 44 } --local fire_origin = { self.x + 26, self.y + 44 }
local fire_origin = { (self.x + (self.width / 2)), self.y + self.height } local fire_origin = { (self.x + (self.width / 2)), self.y + self.height }
if love.timer.getTime() - fireTime > self.fireRate then if love.timer.getTime() - self.fireTime > self.fireRate then
table.insert(enemyBullets, Blaster(fire_origin[1], fire_origin[2], "enemy")) table.insert(self.enemyBullets, Blaster(fire_origin[1], fire_origin[2], "enemy"))
fireTime = love.timer.getTime() self.fireTime = love.timer.getTime()
end end
end end

2
main.lua

@ -18,7 +18,7 @@ function love.load()
table.insert(ListOfEnemies, Enemy((bounds[1] + 50), 100, 70, bounds)) table.insert(ListOfEnemies, Enemy((bounds[1] + 50), 100, 70, bounds))
table.insert(ListOfEnemies, Enemy((bounds[1] + bounds[2]) / 2, 125, 70, bounds)) table.insert(ListOfEnemies, Enemy((bounds[1] + bounds[2]) / 2, 125, 70, bounds))
table.insert(ListOfEnemies, Enemy((bounds[2] - 25), 75, 70, bounds)) table.insert(ListOfEnemies, Enemy((bounds[2] - 50), 75, 70, bounds))
--set background for space! --set background for space!
love.graphics.setBackgroundColor(27 / 255, 51 / 255, 85 / 255) love.graphics.setBackgroundColor(27 / 255, 51 / 255, 85 / 255)

Loading…
Cancel
Save