2012-04-24 68 views
0

如何测试corona sdk中main.lua中的碰撞时,要测试的对象是否在另一个类中定义? 我在玩家类中有一个图像,在敌人类中有一个图像。主要如何检测这些图像是否碰撞?与类中的图像碰撞corona sdk

local function onGlobalCollision (event) 

if (event.phase == "began") then 

print("began: " .. event.object1.myName .. " & " .. event.object2.myName) 

end 

end 

Runtime:addEventListener("collision", onGlobalCollision) 
+0

基本上我有3个文件 - 主要 - 玩家 -enemy 我需要找出是否有在主要检测不同类别和碰撞的图像发生冲突。 如果我把所有的图像放在主体中,它很容易,但我想要一个OOP结构。 – jagguy 2012-04-25 00:10:08

回答

0

这真的归结为你如何设置你的课程。您可能需要发布更多代码。我创建这个例子按预期工作:

box.lua

local Box = {} 
local physics = require("physics") 

function Box:new() 

    local box = display.newRect(math.random(0,display.contentWidth),math.random(0,display.contentHeight),100,100) 
    physics.addBody(box) 

    local function onTouch(event) 
     if(event.phase == "began") then 
      display.getCurrentStage():setFocus(event.target) 
     elseif(event.phase == "moved") then 
      event.target.x = event.x 
      event.target.y = event.y 
     elseif(event.phase == "ended") then 
      display.getCurrentStage():setFocus(nil) 
     end 
    end 

    box:addEventListener("touch", onTouch) 

    return box 

end 

return Box 

main.lua

local physics = require("physics") 
physics:start() 
physics.setGravity(0,0) 

local box1 = require("box"):new() 
box1.myName = "box 1" 

local box2 = require("box"):new() 
box2.myName = "box 2" 

local function onGlobalCollision (event) 
    if (event.phase == "began") then 
     print("began: " .. event.object1.myName .. " & " .. event.object2.myName) 
    end 
end 

Runtime:addEventListener("collision", onGlobalCollision) 

我敢肯定,你甚至可以把该东东删除从主要完全。确保你在别的之前调用了physics.start()。