Problems with contact function

I am trying to use the contact function to determine whether two objects have collided or not. When I run my program it prints “hello” regardless of whether the two objects are touching or not. Here is the code I have produced so far. I am new to Codea so if its really simple then I apologise.

function setup()

ball = physics.body(CIRCLE, 50)
ball.x = 0
ball.y = 0
ball.restitution = .5
ball.info = "ball"

enemyBall = physics.body(CIRCLE, 50)
enemyBall.x = 0
enemyBall.y = 0
enemyBall.restitution = .5
enemyBall.info = "enemyBall"

function collide( contact )

    if contact.state == BEGAN then
    if contact.bodyA.info == "ball" and contact.bodyB.info == "enemyBall"
    or contact.bodyA.info == "enemyBall" and contact.bodyB.info == "ball" then 
        print("hello")
        end
    end

function draw()

physics.gravity(Gravity)
fill(27, 255, 0, 255)
ellipse(x, playerImagePosition.y, ball.radius*1.5)
 
physics.gravity(Gravity)   
fill(0, 255, 29, 255)
ellipse(enemy1Position.x, 500, enemyBall.radius*1.5)

@jonesy166 Here’s an example showing how little code is needed for collision of physics bodies. Maybe this will help some.


function setup()
    ball = physics.body(CIRCLE, 50)
    ball.x = 270
    ball.y = 500
    
    enemyBall = physics.body(CIRCLE, 50)
    enemyBall.x = 200
    enemyBall.y = 200
    enemyBall.gravityScale=0
end
    
function collide( contact )
    if contact.state == BEGAN then
        print("collision")
    end
end
        
function draw()
    background(40,40,50)
    fill(27, 255, 0, 255)
    ellipse(ball.x, ball.y, ball.radius*2)
    ellipse(enemyBall.x, enemyBall.y, enemyBall.radius*2)
end

I have found using the codea included physics example that draws squares around bodies to be quite useful. You don’t have to understand it, just copy the physics debug draw tab and use it

Thanks for your help