Having trouble with removing object if it to far from an object Part2 ?

I know this is the 3rd time asking this. Ok I got the removing of the oobject when its to far, I used it on physics, and I get this error

Runtime error
/Users/sebitttas/Desktop/Game_Gravitron/menu.lua:446: attempt to index upvalue ‘ball’ (a nil value)
stack traceback:
[C]: ?
/Users/sebitttas/Desktop/Game_Gravitron/menu.lua:446: in function
?: in function <?:215>

This time the ball has physics and the square does not and when I place the code I get the error.

This is the code below

[code]

local box = display.newRect(100, 160, 30, 30)
game:insert( box )

local ball = display.newImageRect(“smile.png”, 50 ,50 )
ball.x = 200
ball.y = 200
game:insert( ball )
physics.addBody(ball,{density = 35, bounce = 0.2, friction = 0.5, radius = 20})

local function onCollision4(event)
if event.phase == “began” and event.other.name == “road1” then
jump = 0
print(“works”)
end
end
ball.preCollision = onLocalPreCollision
ball:addEventListener(“collision”, onCollision4)

–Function destroying the object if its to far

local distLimit = 200

local function checkFrame(event)
if ball ~= nil then
if (math.abs(box.x - ball.x)) > distLimit then
–the two objects are now too far apart
–destroy
display.remove(ball)
ball = nil
end
end
end
Runtime:addEventListener(“enterFrame”,checkFrame)
end [/code]

I know is long but just follow what the error says

I need this help is very important to my project
[import]uid: 17058 topic_id: 21500 reply_id: 321500[/import]

This is too much code for me to read; my first suggestion would be checking if the ball exists when the function is called, if it does then try removing “local” from the ball and see if it makes a difference - little things like that to troubleshoot. [import]uid: 52491 topic_id: 21500 reply_id: 85135[/import]

@peach ok now I reduce the code by a lot can you please check it [import]uid: 17058 topic_id: 21500 reply_id: 85166[/import]

@peach I still need help the ball is still giving me an error when being removed [import]uid: 17058 topic_id: 21500 reply_id: 85168[/import]

@peach the last time I did this was without physics, now using physics and have the object 200 units or more gives me an error can you please find the problem thanks :slight_smile: [import]uid: 17058 topic_id: 21500 reply_id: 85220[/import]

It isn’t apparent to me why this is happening; the upvalue error in particular.

Do you have plug and play?

If this is an urgent matter and you need a code review you can use premium support for that - else I will do what I can but obviously it helps the more you can isolate the issue - and being able to actually run it would be a big help here. [import]uid: 52491 topic_id: 21500 reply_id: 85268[/import]

Maybe I’m missing something but what happens if you remove line 24 and the corresponding “end?”

Also, are you sure there are no physics operations being performed on the ball at the point you set it to nil? Try offsetting the deletion of the ball with a timer and see if that makes a difference.

I may be totally wide of the mark as I’m still learning myself.

Spider. [import]uid: 67933 topic_id: 21500 reply_id: 85302[/import]

@peach ok here is the plug and play code so basically to just let the square move the screen and you will see the ball removed because the ball is to far from the square.

[code]module(…, package.seeall)

– Main function - MUST return a display.newGroup()
function new()
local localGroup = display.newGroup()

local physics = require(“physics”)
require “ui”
local ui = require(“ui”)
require( “camera” )
local loqsprite = require(‘loq_sprite’)

physics.start()

–physics.setDrawMode(“hybrid”)

local t = {}
local baseline = 0

local tree = {}
local sky = display.newGroup()

local camera = Camera:new()
local life = 5

local game = display.newGroup();
game.x = -10

–[[for i = 1, 100, 1 do

local back = display.newImage( “layer_back.png” )
back.x = back.contentWidth * i - ( back.contentWidth / 2 )
camera:addObject( back )

local middle = display.newImage( “layer_middle.png” )
middle.x = back.x
camera:addObject( middle )

local front = display.newImage( “layer_front.png” )
front.x = back.x
camera:addObject( front )

end

local width, height = camera:getContentSize()
camera:setClampingBounds( 0, 0, width, height )

local onTouch = function( event )
camera:drag( event )
end

Runtime:addEventListener( “touch”, onTouch )]]–
–[[local baseline = 230
local sky1 = display.newImage (“hill.png”)
sky1:setReferencePoint(display.CenterLeftReferencePoint)
sky1.x = 0
sky1.y = baseline - 10
localGroup:insert(sky1)

local baseline3 = 230
local sky3 = display.newImage (“hill2.png”)
sky3:setReferencePoint(display.CenterLeftReferencePoint)
sky3.x = 240
sky3.y = baseline3 - -10
localGroup:insert(sky3)

local sky4 = display.newImage (“hill3.png”)
sky4:setReferencePoint(display.CenterLeftReferencePoint)
sky4.x = 500
sky4.y = baseline - -60
localGroup:insert(sky4)
local tPrevious = system.getTimer()
local function move(event)
local tDelta = event.time - tPrevious
tPrevious = event.time

local xOffset = ( 0.1 * tDelta )

sky1.x = sky1.x - xOffset
sky3.x = sky3.x - xOffset
sky4.x = sky4.x - xOffset

if (sky1.x + sky1.contentWidth) < 0 then
sky1:translate( 480 * 2, 0)
end
if (sky3.x + sky3.contentWidth) < 0 then
sky3:translate( 480 * 2, 0)
end
if (sky4.x + sky4.contentWidth) < 0 then
sky4:translate( 480 * 2, 0)
end
end

Runtime:addEventListener( “enterFrame”, move )]]–

local box = display.newRect(100, 160, 30, 30)
game:insert( box )

local slow = display.newRect(240, 280, 30,30)

local buttona = display.newRect( 30, 280, 30 ,30)

local road1 = display.newRect( -600, 240, 1000, 10 )
physics.addBody(road1,“static”,{density = 0, bounce = 0.1, friction = 0})
road1.name = “road1”
game:insert( road1 )
–camera:addObject( road1 )

local road2 = display.newRect(400, 210 ,10, 40)
road2.alpha = 1
road2.name = “road1”
–camera:addObject( road2 )

local road3 = display.newRect(400, 210, 500, 10 )
physics.addBody(road3,“static”,{density = 0, bounce = 0, friction = 0})
road3.name = “road1”
game:insert( road3 )
–camera:addObject( road3 )

local road4 = display.newRect(900, 180, 10, 40)
physics.addBody(road4,“static”,{density = 0, bounce = 0.1, friction = 0})
road4.name = “road1”
game:insert( road4 )
–camera:addObject( road4 )

local road5 = display.newRect(900, 180, 500, 10)
physics.addBody(road5,“static”,{density = 0, bounce = 0.1, friction = 0})
road5.name = “road1”
game:insert( road5 )
–camera:addObject( road5 )

local road6 = display.newRect(1400, 150, 10, 40)
physics.addBody(road6,“static”,{density = 0, bounce = 0.1, friction = 0})
road6.name = “road1”
game:insert( road6 )
–camera:addObject( road6 )

local road7 = display.newRect(1400, 150, 500, 10)
physics.addBody(road7,“static”,{density = 0, bounce = 0.1, friction = 0})
road7.name = “road1”
game:insert( road7 )
–camera:addObject( road7 )

local road8 = display.newRect(1900, 90, 10, 70)
physics.addBody(road8,“static”,{density = 0, bounce = 0.1, friction = 0})
road8.name = “road1”
game:insert( road8 )
–camera:addObject( road8 )

local road9 = display.newRect(1900, 90, 100, 10)
physics.addBody(road9,“static”,{density = 0, bounce = 0.1, friction = 0})
road9.name = “road1”
game:insert( road9 )
–camera:addObject( road9 )

local road10 = display.newRect(2000, 90, 10, 70)
physics.addBody(road10,“static”,{density = 0, bounce = 0.1, friction = 0})
road10.name = “road1”
game:insert( road10 )
–camera:addObject( road10 )

local road11 = display.newRect(2000, 150, 100, 10)
physics.addBody(road11,“static”,{density = 0, bounce = 0.1, friction = 0})
road11.name = “road1”
game:insert( road11 )
–camera:addObject( road11 )

local road12 = display.newRect(2100, 150, 10, 70)
physics.addBody(road12,“static”,{density = 0, bounce = 0.1, friction = 0})
road12.name = “road1”
game:insert( road12 )
–camera:addObject( road12 )

local road13 = display.newRect(2100, 220, 500, 10)
physics.addBody(road13,“static”,{density = 0, bounce = 0.1, friction = 0})
road13.name = “road1”
game:insert( road13 )
–camera:addObject( road13 )

local road14 = display.newRect(2600, 220, 10, 40)
physics.addBody(road14,“static”,{density = 0, bounce = 0.1, friction = 0})
road14.name = “road1”
game:insert( road14 )
camera:addObject( road14 )

local road15 = display.newRect(2600, 260, 500, 10)
physics.addBody(road15,“static”,{density = 0, bounce = 0.1, friction = 0})
road15.name = “road1”
game:insert( road15 )
–camera:addObject( road15 )

local road16 = display.newRect(3100, 230, 10, 40)
physics.addBody(road16,“static”,{density = 0, bounce = 0.1, friction = 0})
road16.name = “road1”
game:insert( road16 )
–camera:addObject( road16 )

local road17 = display.newRect(3100, 230, 500, 10)
physics.addBody(road17,“static”,{density = 0, bounce = 0.1, friction = 0})
road17.name = “road1”
game:insert( road17 )
–camera:addObject( road17 )

local road18 = display.newRect(3600,200, 10, 40)
physics.addBody(road18,“static”,{density = 0, bounce = 0.1, friction = 0})
road18.name = “road1”
game:insert( road18 )
–camera:addObject( road18 )

local road19 = display.newRect(3600,200, 400, 10)
physics.addBody(road19,“static”,{density = 0, bounce = 0.1, friction = 0})
road19.name = “road1”
game:insert( road19 )
–camera:addObject( road19 )

local road20 = display.newRect(4000,200, 10, 70)
physics.addBody(road20,“static”,{density = 0, bounce = 0.1, friction = 0})
road20.name = “road1”
game:insert( road20 )
–camera:addObject( road20 )

local road21 = display.newRect(4000,260, 100, 10)
physics.addBody(road21,“static”,{density = 0, bounce = 0.1, friction = 0})
road21.name = “road1”
game:insert( road21 )
–camera:addObject( road21 )

local road22 = display.newRect(4100,200, 10, 70)
physics.addBody(road22,“static”,{density = 0, bounce = 0.1, friction = 0})
road22.name = “road1”
game:insert( road22 )
–camera:addObject( road22 )

local road23 = display.newRect(4100,200, 500, 10)
physics.addBody(road23,“static”,{density = 0, bounce = 0.1, friction = 0})
road23.name = “road1”
game:insert( road23 )
–camera:addObject( road23 )

local road24 = display.newRect(4600,170, 10, 40)
physics.addBody(road24,“static”,{density = 0, bounce = 0.1, friction = 0})
road24.name = “road1”
game:insert( road24 )
–camera:addObject( road24 )

local road255 = display.newRect(4600,170, 300, 10)
physics.addBody(road255,“static”,{density = 0, bounce = 0.1, friction = 0})
road255.name = “road1”
game:insert( road255 )
–camera:addObject( road25 )

local road25 = display.newRect(4900,170, 10, 40)
physics.addBody(road25,“static”,{density = 0, bounce = 0.1, friction = 0})
road25.name = “road1”
game:insert( road25 )
–camera:addObject( road25 )

local road26 = display.newRect(4900,200, 300, 10)
physics.addBody(road26,“static”,{density = 0, bounce = 0.1, friction = 0})
road26.name = “road1”
game:insert( road26 )
–camera:addObject( road26 )

local road27 = display.newRect(5200,200, 10, 70)
physics.addBody(road27,“static”,{density = 0, bounce = 0.1, friction = 0})
road27.name = “road1”
game:insert( road27 )
–camera:addObject( road27 )

local road28 = display.newRect(5200,260, 100, 10)
physics.addBody(road28,“static”,{density = 0, bounce = 0.1, friction = 0})
road28.name = “road1”
game:insert( road28 )
–camera:addObject( road28 )

local road29 = display.newRect(5300,200, 10, 70)
physics.addBody(road29,“static”,{density = 0, bounce = 0.1, friction = 0})
road29.name = “road1”
game:insert( road29 )
–camera:addObject( road29 )

local road30 = display.newRect(5300,200, 200, 10)
physics.addBody(road30,“static”,{density = 0, bounce = 0.1, friction = 0})
road30.name = “road1”
game:insert( road30 )
–camera:addObject( road30 )

local road31 = display.newRect(5500,200, 10, 70)
physics.addBody(road31,“static”,{density = 0, bounce = 0.1, friction = 0})
road31.name = “road1”
game:insert( road31 )
–camera:addObject( road31 )

local road32 = display.newRect(5500,260, 400, 10)
physics.addBody(road32,“static”,{density = 0, bounce = 0.1, friction = 0})
road32.name = “road1”
game:insert( road32 )
–camera:addObject( road32 )

local road33 = display.newRect(5900,200, 10, 70)
physics.addBody(road33,“static”,{density = 0, bounce = 0.1, friction = 0})
road33.name = “road1”
game:insert( road33 )
–camera:addObject( road33 )

local road34 = display.newRect(5900,200, 400, 10)
physics.addBody(road34,“static”,{density = 0, bounce = 0.1, friction = 0})
road34.name = “road1”
game:insert( road34 )
–camera:addObject( road34 )

local road35 = display.newRect(6300,200, 10, 40)
physics.addBody(road35,“static”,{density = 0, bounce = 0.1, friction = 0})
road35.name = “road1”
game:insert( road35 )
–camera:addObject( road35 )

local road36 = display.newRect(6300,230, 500, 10)
physics.addBody(road36,“static”,{density = 0, bounce = 0.1, friction = 0})
road36.name = “road1”
game:insert( road36 )
–camera:addObject( road36 )

local road37 = display.newRect(6800,200, 10, 40)
physics.addBody(road37,“static”,{density = 0, bounce = 0.1, friction = 0})
road37.name = “road1”
game:insert( road37 )
–camera:addObject( road37 )

local road38 = display.newRect(6800,200, 500, 10)
physics.addBody(road38,“static”,{density = 0, bounce = 0.1, friction = 0})
road38.name = “road1”
game:insert( road38 )
–camera:addObject( road38 )

local road39 = display.newRect(7300,170, 10, 40)
physics.addBody(road39,“static”,{density = 0, bounce = 0.1, friction = 0})
road39.name = “road1”
game:insert( road39 )
–camera:addObject( road39 )

local road40 = display.newRect(7300,170, 600, 10)
physics.addBody(road40,“static”,{density = 0, bounce = 0.1, friction = 0})
road40.name = “road1”
game:insert( road40 )
–camera:addObject( road40 )

physics.addBody(road2,“static”,{density = 0, bounce = 0.1, friction = 0})
game:insert( road2 )
–camera:addObject( road2 )

ball = display.newCircle(200, 200 ,20 ,20 )
game:insert( ball )
physics.addBody(ball,{density = 30, bounce = 0.2, friction = 0, radius = 19})

local word = display.newText(“Right”, 30 ,30, “Arial”, 30)
word.x = 240
word.y = 270

local lifes = display.newText("Life: ",0,0,nil,22)
lifes.x = 40
lifes.y = 270
lifes.text = "Life: "… life

local function lost (event)
if life == 0 then
display.remove(ball)
end
end
Runtime:addEventListener(“enterFrame”, lost)

local move = function( event )
ball:applyForce( 100, 2000, ball.x, ball.y )
ball.angularVelocity = 700
end

Runtime:addEventListener( “enterFrame”, move )

local slows = function( event )
ball:applyForce( 2000, -22000, ball.x, ball.y )
ball.angularVelocity = 0

end

slow:addEventListener( “touch”, slows )

local move = function( event )
box.x = box.x + 3
camera:update( event )
end

Runtime:addEventListener( “enterFrame”, move )

local function moveCamera()
if (box.x > 90 and box.x < 200000) then
game.x = -box.x + 400
end
end
Runtime:addEventListener( “enterFrame”, moveCamera )

local jump = 0

local function onScreenTouch( event )
if event.phase == “began” then
jump = jump + 1
if jump < 2 then
ball:applyForce( 10, -22000, ball.x, ball.y )
elseif jump == 2 then
ball:applyForce( 10, -22000, ball.x, ball.y )
print(jump)
end

end
end

buttona:addEventListener( “touch”, onScreenTouch )

local function onCollision4(event)
if event.phase == “began” and event.other.name == “road1” then
jump = 0
print(“works”)
end
end
ball.preCollision = onLocalPreCollision
ball:addEventListener(“collision”, onCollision4)

local distLimit = 200

local function checkFrame(event)
if ball ~= nil then
if (math.abs(box.x - ball.x)) > distLimit then
–the two objects are now too far apart
–destroy
display.remove(ball)
ball = nil
end
end
end
Runtime:addEventListener(“enterFrame”,checkFrame)

–[[
camera:addObject( road1 )
camera:addObject( road2 )
camera:addObject( road3 )
camera:addObject( road4 )
camera:addObject( road5 )
camera:addObject( road6 )
camera:addObject( road7 )
camera:addObject( road8 )
camera:addObject( road9 )
camera:addObject( road10 )
camera:addObject( road11 )
camera:addObject( road12 )
camera:addObject( road13 )
camera:addObject( road14 )
camera:addObject( road15 )
camera:addObject( road16 )
camera:addObject( road17 )
camera:addObject( road18 )
camera:addObject( road19 )
camera:addObject( road20 )
camera:addObject( road21 )
camera:addObject( road22 )
camera:addObject( road23 )
camera:addObject( road24 )
camera:addObject( road25 )
camera:addObject( road26 )
camera:addObject( road27 )
camera:addObject( road28 )
camera:addObject( road29 )
camera:addObject( road30 )
camera:addObject( road31 )
camera:addObject( road32 )
camera:addObject( road33 )
camera:addObject( road34 )
camera:addObject( road35 )
camera:addObject( road36 )
camera:addObject( road37 )
camera:addObject( road38 )
camera:addObject( road39 )
camera:addObject( road40 )
camera:addObject( road255 )
]]–

return localGroup
end [/code]

Also this code is using director just to say. So just plug it in the menu.lua or any lua besides main and see why I get this error thanks :slight_smile: [import]uid: 17058 topic_id: 21500 reply_id: 85350[/import]

Just sent you an email. [import]uid: 52491 topic_id: 21500 reply_id: 85454[/import]