Hi guys
I read some collision and to be honest they kind of confusing for people that its starting
Now is it possible "IF" someone could share the most simplest example in collision like
2 rec each 100x100 and once they touch each other for the score to add up?
once AGAIN THANK YOU GUYS GREAT FORUM !!!!
P.S
wonder if apply to bullets? simple as can be...
simple collision
Forum rules
Before you make a thread asking for help, read this.
Before you make a thread asking for help, read this.
- Sheepolution
- Party member
- Posts: 264
- Joined: Mon Mar 04, 2013 9:31 am
- Location: The Netherlands
- Contact:
Re: simple collision
It's simple and logic thinking
If you have 2 squares, what needs to be true so you're sure they touch each other?
Well, the left side of the square 1, needs to be more to the left than the right side of square 2.
The right side of square 1, needs to be more to the right than the left side of square 2.
The upper side of square 1, needs to be higher than down side of square 2.
And the down side of square 1, needs to be lower than the upper side of square 2.
So you will end up with something like this:
The variables left, right, up and left is simply the x and y for left and up and x+width and y+height for right and down.
Although I prefer centering the image, because of the way how it turns around.
If you have 2 squares, what needs to be true so you're sure they touch each other?
Well, the left side of the square 1, needs to be more to the left than the right side of square 2.
The right side of square 1, needs to be more to the right than the left side of square 2.
The upper side of square 1, needs to be higher than down side of square 2.
And the down side of square 1, needs to be lower than the upper side of square 2.
So you will end up with something like this:
Code: Select all
if left1 < right2 and right1 > left2 and up1 < down2 and down1 > up2 then
collision = true
end
Although I prefer centering the image, because of the way how it turns around.
Re: simple collision
thank you it works thank you so much
Re: simple collision
Sorry, the board attachment quota has been reached. <---- for some reason the site won't let me upload my .love but well here it goes
can someone help me with a simple collision i have 2 different rectangles and i need them to NOT overlap ..
i have the rectangle that i control plus 2 more and i don't want them to overlap for some reason my code won't work and i need it asap
here its the code and hope someone could help me soon
external lua
can someone help me with a simple collision i have 2 different rectangles and i need them to NOT overlap ..
i have the rectangle that i control plus 2 more and i don't want them to overlap for some reason my code won't work and i need it asap
here its the code and hope someone could help me soon
Code: Select all
function love.load()
require 'blockss'
g=love.graphics
k={}
k.x=100
k.y=100
k.w=50
k.h=50
k.direction = 'right'
k.speed=200
u={}
u.x=400
u.y=100
u.w=50
u.h=50
bbb:load()
end
function love.draw()
bbb:draw()
g.setColor(255,255,255,255)
g.rectangle('line',k.x,k.y,k.w,k.h)
g.rectangle('line',u.x,u.y,u.w,u.h)
end
function love.update(dt)
bbb:update(dt)
if love.keyboard.isDown('w') then
k.direction = 'up'
blocks(k.x, k.y - k.speed * dt)
elseif love.keyboard.isDown('s') then
k.direction = 'down'
blocks(k.x, k.y + k.speed * dt)
end
if love.keyboard.isDown('a') then
k.direction = 'left'
blocks(k.x - k.speed * dt, k.y)
elseif love.keyboard.isDown('d') then
k.direction = 'right'
blocks(k.x + k.speed * dt, k.y)
end
end
function blocks(xx,yy)
if CheckCollision(xx, yy, k.w, k.h, u.x, u.y, u.w, u.h) then
while CheckCollision(xx, yy, k.w, k.h, u.x, u.y, u.w, u.h) do
if k.direction == 'left' then
xx = xx - 1
elseif k.direction == 'right' then
xx = xx + 1
elseif k.direction == 'up' then
yy = yy - 1
elseif k.direction == 'down' then
yy = yy + 1
end
end
else
k.x = xx
k.y = yy
end
end
Code: Select all
bbb={}
function bbb:load()
uu={}
uu.x=400
uu.y=300
uu.w=100
uu.h=50
end
function bbb:draw()
g.setColor(255,0,0,255)
g.rectangle('line',uu.x,uu.y,uu.w,uu.h)
end
function bbb:update(dt)
if love.keyboard.isDown('w') then
k.direction = 'up'
hits(k.x, k.y - k.speed * dt)
elseif love.keyboard.isDown('s') then
k.direction = 'down'
hits(k.x, k.y + k.speed * dt)
end
if love.keyboard.isDown('a') then
k.direction = 'left'
hits(k.x - k.speed * dt, k.y)
elseif love.keyboard.isDown('d') then
k.direction = 'right'
hits(k.x + k.speed * dt, k.y)
end
end
function hits(xx,yy)
if CheckCollision(xx, yy, k.w, k.h, uu.x, uu.y, uu.w, uu.h) then
while CheckCollision(xx, yy, k.w, k.h, uu.x, uu.y, uu.w, uu.h) do
if k.direction == 'left' then
xx = xx - 1
elseif k.direction == 'right' then
xx = xx + 1
elseif k.direction == 'up' then
yy = yy - 1
elseif k.direction == 'down' then
yy = yy + 1
end
end
else
k.x = xx
k.y = yy
end
end
function CheckCollision(ax1,ay1,aw,ah, bx1,by1,bw,bh)
local ax2,ay2,bx2,by2 = ax1 + aw, ay1 + ah, bx1 + bw, by1 + bh
return ax1 < bx2 and ax2 > bx1 and ay1 < by2 and ay2 > by1
end
Re: simple collision
Code: Select all
object's x = next x - ((next x + [object's width/2]) % width of what you wanted to collide with.)
I'm also confused on your code. Where is the player and where is the object to collide with?
~ CRxTRDude || Will be out of touch for a wee longer than expected. Will keep in touch with soon enough. Sorry bout that.
Who is online
Users browsing this forum: Ahrefs [Bot] and 6 guests