2012-04-24 14 views
0

テストするオブジェクトが別のクラスで定義されている場合、コロナsdkのmain.luaでの衝突をテストするにはどうすればよいですか? 私はプレーヤークラスに画像を、敵クラスに画像を持っています。メインでは、これらのイメージが衝突するかどうかをどのように検出するのですか?コロナ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つのファイル を持っています。 すべての画像をメインに入れれば簡単に動作しますが、OOP構造が必要です。 – jagguy

答えて

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()を呼び出したことを確認してください。メイン - - プレイヤー 私は衝突がメインで検出された別のクラスとの衝突でイメージで発生したかどうかを確認する必要が-enemy