Lua碰撞零值

时间:2013-10-23 16:09:33

标签: lua physics collision null

当我尝试执行以下代码时,它给了我这个错误:

  

尝试索引字段'other'(零值)

但我不知道为什么。

代码:

function onCollision(event)
 if event.phase == "began" then 
    if event.other.star == "star" then
       score = score + 1
    elseif event.other.mine1 == "mine1" then
       if jet.collided == false then
         timer.cancel(tmr)    
         jet.collided = true    
         jet.bodyType = "static"
         explode()
       end
     end
   end
 end

提前致谢:)

1 个答案:

答案 0 :(得分:5)

由于@lhf和@RBerteig表示问题是event.othernil,因此尝试访问star成员无法尝试索引零值。

假设event.other确实可以是nil,解决问题的惯用方法是在前一个if event.phase == "began" and event.other then添加一个零检查,因为if和else条件都取决于event.other待设置。

function onCollision(event)
 if event.phase == "began" and event.other then 
    if event.other.star == "star" then
       score = score + 1
    elseif event.other.mine1 == "mine1" then
       if jet.collided == false then
         timer.cancel(tmr)    
         jet.collided = true    
         jet.bodyType = "static"
         explode()
       end
    end
  end
 end

如果您想知道“尝试索引字段”的消息,您还可以阅读有关lua index metamethod here

的更多信息