【问题标题】:Collision of a drawed line and objects(Corona SDK)画线与物体的碰撞(Corona SDK)
【发布时间】:2012-04-23 15:40:57
【问题描述】:

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

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);

但它不起作用......有什么想法吗?

【问题讨论】:

    标签: lua collision coronasdk


    【解决方案1】:

    我需要查看更多您的代码,特别是您如何创建线路(或线路,如果您经常创建/销毁它们),以给出您可能希望的答案。但是,如果我这样做,我可能会在每个手指移动时绘制/重画线(不添加物理体)并根据手指位置手动检查与矩形的交点。即,类似于以下内容:

    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
    

    冲突的问题在于,如果您正在创建和重新创建线并且它们碰巧相交,由于它们的生命周期短(以及它们实际上并没有移动的事实),您可能不会收到事件。如果你真的想使用碰撞,我会在触摸开始(一个圆圈)时创建一个不可见的代理对象,并在移动时从起点画一条线到它。然后我会在代理对象上使用触摸关节并检测其上的碰撞。这可能比它的价值更麻烦。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-03
    • 1970-01-01
    • 2017-09-02
    相关资源
    最近更新 更多