停止箭头乱射

我正在大学里用Lua做我的第一个游戏,但我遇到了一个难题。 我的角色不停地射箭,我想让它延迟每一箭的射击。

我尝试创建函数模拟延迟,但它没有起作用。

local function atkRight()
    system.setTapDelay(10)
    display.remove(char)
    char = display.newImageRect ( "Sprites/archerRight.png", 50, 60)
    char.x = display.contentCenterX
    char.y = display.contentCenterY+50
    physics.addBody (char, "static", { isSensor=false })
    char.myName = "char"

    local arrowRight = display.newImageRect ( "Sprites/arrowRight.png", 50, 5)
    arrowRight.x = display.contentCenterX+40
    arrowRight.y = display.contentCenterY+40
    physics.addBody (arrowRight, "dynamic", { bounce = 0 })
    arrowRight:setLinearVelocity(500, 0)
    arrowRight.gravityScale = 0
    arrowRight.myName = "arrowRight"
end

atkiconRight:addEventListener( "tap", atkRight )

我希望这个攻击函数每0.5秒只能被执行一次。

点赞
用户2858170
用户2858170

有各种方法可以完成这个任务。 最简单的方法可能是让您的事件回调检查时间。

https://docs.coronalabs.com/api/library/system/getTimer.html

在全局变量中存储射击开火的时间戳。当有一次射击发生并且有前一次射击的时间戳时,检查时间戳,只有在至少0.5秒后再射击。

另一种方法是删除事件监听器并开始定时器事件,该事件将在500ms后重新添加事件监听器。或者您可以使用全局标志来禁止射击,并使用定时器重置该标志每500毫秒。

采用哪种方法取决于您。

2019-03-29 13:43:14