2012-04-24 93 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()。