如何不断检查对象在 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
我正在开发一款游戏,该游戏涉及绘制线条以将物理球引导到屏幕底部的桶中。然而,有时用户可能会画得不好,球会卡住。为了解决这个问题,我想每 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