Is there a way in codea to say,
if sprite1 is touching sprite2 then
do something
end
Is there a way in codea to say,
if sprite1 is touching sprite2 then
do something
end
I don’t know about that but if you know the width and height of sprites then maybe you could check if the x,y coordinates of one sprite are close to the other spites coordinates. Or if you want you can make physics objects around them and use collide function. Here’s the tutorial for it by @Ignatz http://coolcodea.wordpress.com/2013/05/05/48-creating-physics-objects-for-strange-shapes/. But if the sprites are too complicated I’d say you go for the first method it’s not that accurate but it can save some processing power.
I used this in a simple side scroller. Nothing fancy but it worked. It returns true if collision occurs
function collision(rectA, rectB) -- each rect is a table that holds x, y, width, height
local ax2, bx2, ay2, by2 = rectA.x + rectA.width, rectB.x + rectB.width, rectA.y + rectA.height, rectB.y + rectB.height
return ax2 > rectB.x and bx2 > rectA.x and ay2 > rectB.y and by2 > rectA.y
end
If the sprites are round you can use physics.body CIRCLE, but if they’re irregular then you can use physics.body POLYGON.
supportedOrientations(PORTRAIT)
function setup()
c1=physics.body(CIRCLE,35)
c1.x=WIDTH/2
c1.y=HEIGHT-200
c1.restitution=1
c2=physics.body(CIRCLE,35)
c2.type=STATIC
c2.x=WIDTH/2
c2.y=400
end
function draw()
background(40, 40, 50)
sprite("Planet Cute:Character Princess Girl",c1.x,c1.y)
sprite("Planet Cute:Gem Blue",c2.x,c2.y)
end
function collide(c)
if c.state==BEGAN then
print("collision, do something")
end
end