在解决碰撞之前无法转换对象

时间:2013-12-23 20:01:56

标签: lua corona

编译时显示

  

错误:在解决冲突之前无法转换对象

当我为Android构建应用程序时,它向我显示错误#5(null)。

这是我的代码:

function onLocalCollision(meteor, event)
  if event.phase == "began" then
  if event.object1.myName == "meteor" and
     event.object2.myName == "rocket" then
    score = score - 1
    scoreNumber.text = score
    restart.isVisible = true
    meteor.x = 500   
    meteor.y = 300
    meteor2.x = 500
    meteor2.y = 200
    meteor3.x = 500
    meteor3.y = 100
    event.object2.alpha = 0.2
    rocket:applyForce(-150,0,rocket.x,rocket.y)
    lives = lives -1
    livesNumber.text = lives
    if lives < 1 then
    lives = 3
    score = 0
    scoreNumber.isVisible = false
    livesText.isVisible = false
    livesNumber.isVisible=false
    hearticon.isVisible = false
    scoreText.isVisible = false
    gameover.isVisible = true
    restart.x = 100000
    end
  end
  end
end


meteor.collision = onLocalCollision
Runtime:addEventListener("collision", meteor)

1 个答案:

答案 0 :(得分:0)

你的代码的问题在于你无法在碰撞(函数)中进行翻译,所以如果你只说:timer.performWithDelay(100, function() rocket:applyForce(-150,0,rocket.x,rocket.y) end, 1)它应该解决你的问题和/或只是创建一个回调函数。

  

“修改对象   在碰撞事件期间,不应移除碰撞中涉及的对象或改变其中的任何属性。如果要修改碰撞事件中的对象位置值或其他属性,则应使用timer.performWithDelay()。

     

删除对象或修改碰撞事件中的属性可能会导致模拟器崩溃。“

http://docs.coronalabs.com/api/event/collision/index.html