1

以下のコードは、スペース シューティング ゲームでエイリアンの船を作成して 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

衝突イベントリスナーを削除すると、エラーは発生せず、エイリアンの船が他のオブジェクトに衝突するだけなので、関数を呼び出す方法に問題があるはずですが、何が原因かわかりません。

4

1 に答える 1