以下のコードは、スペース シューティング ゲームでエイリアンの船を作成して main.lua に返すクラスからのものです。
この船が物体に衝突した場合に何が起こるかを決定する関数を含める必要がありますが、コードを実行するとエイリアンの船が何かに衝突すると、コロナ ランタイム エラーが発生します。
nil 値の呼び出しを試みます - トレースバックを開始します: [C]:?
-- COLLISION FUNCTION
local function xenosColl(event)
if (event.phase == "began") then
print("hahf")
end
end
-- XENOS SHIP
function xenosShip.new()
local newXenosShip=display.newSprite( alShipSheet, alShipSeqData )
newXenosShip:play()
newXenosShip.x=580
newXenosShip.y=70
newXenosShipShape = {0,-40 , 60,0 , 0,40 , -60,0}
newXenosShip.myName = "newXenosShip"
physics.addBody(newXenosShip,"dynamic", {density = 1.0, friction = 0.3, bounce = 1, shape = newXenosShipShape})
newXenosShip:applyForce(0,2000,newXenosShip.x,newXenosShip.y)
newXenosShip:addEventListener("collision", xenosColl)
return setmetatable(newXenosShip, xenosShip_mt)
end
return xenosShip
衝突イベントリスナーを削除すると、エラーは発生せず、エイリアンの船が他のオブジェクトに衝突するだけなので、関数を呼び出す方法に問題があるはずですが、何が原因かわかりません。