this is a copy and paste of my response to Pg UP
it's my own way to handle physics, it's a simple way to handle physics object collisions
i used the world and physics engine but it was not very successful
i used few variables
Code: Select all
up = 0
left = 0
right = 0
down = 0
i added the collisions of a player by adding it's position.
Code: Select all
shape.x = 300
shape.y = 300
shape.wid = 32
shape.hei = 32
then i added this function
Code: Select all
function CheckCollision(x1,y1,w1,h1, x2,y2,w2,h2)--
local bx1,by1,bx2, by2 = x1 + w1 ,y1 + h1, x2 + w2, y2 + h2
return x1 < x2+w2 and
x2 < x1+w1 and
y1 < y2+h2 and
y2 < y1+h1
end
and finally i implemented 4 lines that composed a collision rectangle for the player.
Code: Select all
if CheckCollision (player.x + 19, player.y + 13, 20, 1, shape.x, shape.y, shape.wid ,shape.hei)then
-- the first four values correspond to the first shape, the other fours the second shape.
up = 1
else
up = 0
end
if CheckCollision (player.x + 17, player.y + 14, 1, 20, shape.x, shape.y, shape.wid ,shape.hei)then
left = 1
else
left = 0
end
if CheckCollision (player.x + 40, player.y + 14, 1, 20, shape.x, shape.y,shape.wid, shape.hei)then
else
right = 0
end
if CheckCollision (player.x + 19, player.y + 35, 20, 1, shape.x, shape.y, shape.wid ,shape.hei)then
down = 1
else
down = 0
end
you can put anything you want in those CheckCollision events
and everything you put will be encountered only when colliding from the direction you set
exemple :
Code: Select all
if CheckCollision (player.x + 19, player.y + 35, 20, 1, shape.x, shape.y, shape.wid ,shape.hei)then
down = 1
a= a + 1
else
down = 0
end
if you need to delete an object, simply cancel its effect by putting the condition under an if statement that disables physics
and sprites.
Code: Select all
while (condtition of removal == false)do
if CheckCollision (player.x + 19, player.y + 35, 20, 1, shape.x, shape.y, shape.wid ,shape.hei)then
down = 1
a= a + 1
else
down = 0
end
end