0

たとえば、指で描くことができる線があり、長方形があります。長方形と衝突したときに線の描画を終了したい。どうすればできますか?私の行の機能の例:

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

しかし、うまくいきません...何かアイデアはありますか?

4

1 に答える 1

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

衝突の問題は、線を作成および再作成していて、線が交差する場合、ライフサイクルが短い(実際には動いていない)ためにイベントが発生しない可能性があることです。本当に衝突を使用したい場合は、タッチ開始時に非表示のプロキシオブジェクト(円)を作成し、移動時に開始点から開始点まで線を引きます。次に、プロキシオブジェクトでタッチジョイントを使用して、そのオブジェクトでの衝突を検出します。それはおそらくそれが価値があるよりも厄介です。

于 2012-08-10T00:21:22.120 に答える