绘制线和对象的碰撞(Corona SDK)

时间:2012-04-23 15:40:58

标签: lua collision corona

例如,我有一条线,我可以用手指画,我有一个矩形。我希望我的线在与矩形碰撞时结束绘制。我该怎么做? 对于我的职能:

local line = function()
if(e.phase == "began") then
--code for line
elseif(e.phase == "moved") then
--code for line to draw
elseif(e.phase == "ended") then
--code for line to stop draw
end

我想我能用像这样的碰撞史密斯做到这一点

local function onCollision( event )
        if ( event.phase == "began" ) then


                if event.object1.myName == "top" and event.object2.myName == "line" then
                        line("ended")

                end

        end
end

    Runtime:addEventListener("collision", onCollision);

但它不起作用......任何想法?

1 个答案:

答案 0 :(得分:0)

我需要查看更多代码,特别是如何创建代码行(如果你经常创建/销毁它们,则为行),给出你可能希望得到的答案。但是,如果我这样做,我可能会在每次手指移动时绘制/重绘线条(不添加物理体)并根据手指位置手动检查矩形的交点。即,如下所示:

local line = function()
    ...
    elseif(e.phase == "moved") then
        local cb = rect.contentBounds
        if event.x > cb.xMin and event.x < cb.xMax and event.y > cb.yMin and event.y < cb.yMax) then
            line("ended")
        end
    else
    ....
end

碰撞的问题在于,如果您正在创建和重新创建线条并且它们确实相交,那么由于它们的生命周期较短(以及它们实际上并未移动),您可能无法获得事件。如果您真的想要使用碰撞,我会在触摸开始(圆圈)上创建一个不可见的代理对象,并在移动时从起点绘制一条线。然后我在代理对象上使用触摸关节并检测其上的碰撞。这可能比它的价值更令人烦恼。