【问题标题】:Stop Arrow Spam停止箭头垃圾邮件
【发布时间】:2019-08-20 10:34:54
【问题描述】:

我在大学里玩 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 coronasdk


    【解决方案1】:

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

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

    将射击的时间存储在全局变量中。 当开枪并且有前一枪的时间戳时,检查并仅在至少晚 0.5 秒时才开枪。

    另一种方法是删除事件侦听器并启动一个计时器事件,该事件将在 500 毫秒后重新添加事件侦听器。或者你有一个阻止射击的全局标志,并有一个计时器每 500 毫秒重置一次这个标志。

    走哪条路取决于你。

    【讨论】:

      猜你喜欢
      • 2016-07-10
      • 1970-01-01
      • 2016-07-29
      • 2011-04-14
      • 2017-05-27
      • 2011-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多