Added collision check to spawn point finder

This commit is contained in:
2024-12-02 18:14:36 -06:00
parent b9613bbbee
commit f93a8ae2c4
2 changed files with 13 additions and 3 deletions

View File

@@ -81,7 +81,12 @@ function Siren:_findSpawnPoint()
local pos = random.chooseUntil(self.game.env.nodes, function(element)
local distanceToPlayer = vector.dist(element.x, element.y, self.game.player:getPos())
return distanceToPlayer > self.stats.spawnDistanceFromPlayer
local isFarEnough = distanceToPlayer > self.stats.spawnDistanceFromPlayer
local _, len = self.game.world:queryPoint(element.x + (TILE_SIZE / 2), element.y + (TILE_SIZE / 2))
local isEmptyTile = len == 0
return isFarEnough and isEmptyTile
end)
pos.x = pos.x + ((TILE_SIZE - self.size.w) / 2)

View File

@@ -19,7 +19,7 @@ function Worm.new(game)
self.stats = {
spawnDistanceFromPlayer = 5 * TILE_SIZE,
moveDelay = 1, -- Seconds between movement steps
tailLength = 5
tailLength = 7
}
self.size = {}
@@ -88,7 +88,12 @@ function Worm:getSize() return self.size.w, self.size.h end
function Worm:_findSpawnPoint()
local pos = random.chooseUntil(self.game.env.nodes, function(element)
local distanceToPlayer = vector.dist(element.x, element.y, self.game.player:getPos())
return distanceToPlayer > self.stats.spawnDistanceFromPlayer
local isFarEnough = distanceToPlayer > self.stats.spawnDistanceFromPlayer
local _, len = self.game.world:queryPoint(element.x + (TILE_SIZE / 2), element.y + (TILE_SIZE / 2))
local isEmptyTile = len == 0
return isFarEnough and isEmptyTile
end)
return pos