如何不断检查对象在 lua 中的位置

How to constantly check the location of an object in lua

我正在开发一款游戏,该游戏涉及绘制线条以将物理球引导到屏幕底部的桶中。然而,有时用户可能会画得不好,球会卡住。为了解决这个问题,我想每 3 秒检查一次球的位置。

这就是我认为可行的方法:

 function checkBallVelocity(event)
    startX = event.x
    startY = event.y

    timer.performWithDelay( 5000, function()

        endX = event.x
        endY = event.y

        print(startX..","..startY.." || "..endX..","..endY)
        if startX == endX or startY == endY then

            if event.other.name == "1" then

                circle1:removeSelf( )
                circle1 = nil

                ballsMissed = ballsMissed + 1
            elseif event.other.name == "2" then

                circle2:removeSelf( )
                circle2 = nil

                ballsMissed = ballsMissed + 1
            elseif event.other.name == "3" then

                circle3:removeSelf( )
                circle3 = nil

                ballsMissed = ballsMissed + 1
            end
            return 1
        else
            checkBallVelocity()
        end
    end
    )
end

遗憾的是,事实并非如此。欢迎任何 help/advice

有很多方法可以做到这一点,但 Corona 提供了一个 enterFrame 事件,每次绘制一帧(每秒 30 或 60 帧)时都会触发该事件。它可以用作执行周期性操作的主循环,但请记住,它 运行 相当 经常使用,因此它有助于定义一个周期并将您的操作限制在特定范围内期间内的阶段。

local period
local phase = 0
function mainLoop(event) 
    phase = phase + 1
    if phase == 1 then 
       checkBallPosition(...)
    elseif phase == period
       phase = 0
    end
end
...
function scene:enterScene( event ) 
    period = display.fps * 3 -- # of seconds
    Runtime:addEventListener("enterFrame", mainLoop)
    ...
end