停止箭头垃圾邮件

问题描述 投票:1回答:1

我正在和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秒执行一次

lua corona
1个回答
2
投票

有多种方法可以实现这一目标。最简单的方法可能是让您的事件回调检查时间。

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

将射击的时间存储在全局变量中。当一个镜头被击中并且有一个前一张镜头的时间戳时,检查并且只在至少0.5秒之后才拍摄。

另一种方法是删除事件监听器并启动一个定时器事件,该事件将在500ms后重新添加事件监听器。或者你有一个全局标志,可以防止射击并让计时器每500ms重置一次这个标志。

走哪条路取决于你。

© www.soinside.com 2019 - 2024. All rights reserved.