comprobación simple de colisión
This commit is contained in:
parent
f43e0c25b2
commit
c1c1eece39
16
entidades/cercado.lua
Normal file
16
entidades/cercado.lua
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
Cercado = {}
|
||||||
|
|
||||||
|
function Cercado:new(x, y)
|
||||||
|
self.sprite = love.graphics.newImage("img/cercado.png")
|
||||||
|
self.width = self.sprite:getWidth()
|
||||||
|
self.height = self.sprite:getHeight()
|
||||||
|
self.x = x-self.width/2
|
||||||
|
self.y = y-self.height/2
|
||||||
|
self.speed = 2
|
||||||
|
|
||||||
|
return self
|
||||||
|
end
|
||||||
|
|
||||||
|
function Cercado:draw()
|
||||||
|
love.graphics.draw(self.sprite, self.x, self.y)
|
||||||
|
end
|
@ -1,3 +1,5 @@
|
|||||||
|
require("../lib/helpers")
|
||||||
|
|
||||||
Ovella = {}
|
Ovella = {}
|
||||||
local OvellaMT = {__index = Ovella}
|
local OvellaMT = {__index = Ovella}
|
||||||
|
|
||||||
@ -14,7 +16,7 @@ function Ovella:new(id, x, y)
|
|||||||
return setmetatable(instance, OvellaMT)
|
return setmetatable(instance, OvellaMT)
|
||||||
end
|
end
|
||||||
|
|
||||||
function Ovella:update(pastor)
|
function Ovella:update(pastor, cercado)
|
||||||
-- vector
|
-- vector
|
||||||
local X = pastor.x - self.x;
|
local X = pastor.x - self.x;
|
||||||
local Y = pastor.y - self.y;
|
local Y = pastor.y - self.y;
|
||||||
@ -43,6 +45,9 @@ function Ovella:update(pastor)
|
|||||||
if distancia < DISTANCIA then
|
if distancia < DISTANCIA then
|
||||||
-- movemento
|
-- movemento
|
||||||
-- FIXME comprobar que non se vai de marxenes e non choca con muros
|
-- FIXME comprobar que non se vai de marxenes e non choca con muros
|
||||||
|
print(Helpers:CheckCollision(self, cercado))
|
||||||
|
|
||||||
|
-- Establece a nova posición
|
||||||
self.x = self.x - dX;
|
self.x = self.x - dX;
|
||||||
self.y = self.y - dY;
|
self.y = self.y - dY;
|
||||||
end
|
end
|
||||||
|
BIN
img/pastor.png
BIN
img/pastor.png
Binary file not shown.
Before Width: | Height: | Size: 920 B After Width: | Height: | Size: 2.1 KiB |
BIN
img/pastor2.png
Normal file
BIN
img/pastor2.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 920 B |
10
lib/helpers.lua
Normal file
10
lib/helpers.lua
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
Helpers = {}
|
||||||
|
|
||||||
|
function Helpers:CheckCollision(entidade1, entidade2)
|
||||||
|
return entidade1.x < entidade2.x+entidade2.width and
|
||||||
|
entidade2.x < entidade1.x+entidade1.width and
|
||||||
|
entidade1.y < entidade2.y+entidade2.height and
|
||||||
|
entidade2.y < entidade1.y+entidade1.height
|
||||||
|
end
|
||||||
|
|
||||||
|
return Helpers
|
11
main.lua
11
main.lua
@ -1,6 +1,7 @@
|
|||||||
require "socket" -- para o tempo en milisengundos
|
require "socket" -- para o tempo en milisengundos
|
||||||
require("entidades/pastor")
|
require("entidades/pastor")
|
||||||
require("entidades/ovella")
|
require("entidades/ovella")
|
||||||
|
require("entidades/cercado")
|
||||||
inspect = require 'lib.inspect'
|
inspect = require 'lib.inspect'
|
||||||
|
|
||||||
-- configuracion
|
-- configuracion
|
||||||
@ -21,16 +22,14 @@ function love.load()
|
|||||||
|
|
||||||
-- imaxes
|
-- imaxes
|
||||||
background = love.graphics.newImage("img/fondo.png")
|
background = love.graphics.newImage("img/fondo.png")
|
||||||
cercado = love.graphics.newImage("img/cercado.png")
|
|
||||||
|
|
||||||
-- fonte
|
-- fonte
|
||||||
local f = love.graphics.newFont(12)
|
local f = love.graphics.newFont(12)
|
||||||
love.graphics.setFont(f)
|
love.graphics.setFont(f)
|
||||||
|
|
||||||
-- entidades
|
-- entidades
|
||||||
|
cercado = Cercado:new(width/2, height/2)
|
||||||
player = Pastor:new(width/2, height/2)
|
player = Pastor:new(width/2, height/2)
|
||||||
|
|
||||||
-- ovellas con posicios aleatorias
|
|
||||||
for i=1,OVELLAS do
|
for i=1,OVELLAS do
|
||||||
-- print(i)
|
-- print(i)
|
||||||
math.randomseed(os.time()+i)
|
math.randomseed(os.time()+i)
|
||||||
@ -55,9 +54,7 @@ function love.draw()
|
|||||||
end
|
end
|
||||||
|
|
||||||
-- cercado
|
-- cercado
|
||||||
cercadoX = (love.graphics.getWidth() - cercado:getWidth()) / 2
|
cercado:draw()
|
||||||
cercadoY = (love.graphics.getHeight() - cercado:getHeight()) / 2
|
|
||||||
love.graphics.draw(cercado, cercadoX, cercadoY)
|
|
||||||
|
|
||||||
-- pastor
|
-- pastor
|
||||||
player:draw()
|
player:draw()
|
||||||
@ -76,7 +73,7 @@ function love.update(dt)
|
|||||||
player:update(dt)
|
player:update(dt)
|
||||||
-- update ovella object
|
-- update ovella object
|
||||||
for i = 1, #ovellas,1 do --itera sobre cada ovella na tabla
|
for i = 1, #ovellas,1 do --itera sobre cada ovella na tabla
|
||||||
ovellas[i]:update(player)
|
ovellas[i]:update(player, cercado)
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user