lua - 停止箭头垃圾邮件
问题描述
我在大学里用 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 秒执行一次
解决方案
有多种方法可以实现这一目标。最简单的方法可能是让您的事件回调检查时间。
https://docs.coronalabs.com/api/library/system/getTimer.html
将射击的时间存储在全局变量中。当开枪并且有前一枪的时间戳时,检查并仅在至少晚 0.5 秒后才开枪。
另一种方法是删除事件侦听器并启动一个计时器事件,该事件将在 500 毫秒后重新添加事件侦听器。或者你有一个阻止射击的全局标志,并有一个计时器每 500 毫秒重置一次这个标志。
走哪条路取决于你。
推荐阅读
- html - 如何使用 HTML 在 Firefox 上定位 iframe?
- python - Python 正则表达式返回不匹配
- javascript - 如何用剧作家调用页面功能?
- php - 如何写 WHERE 引用下拉列表选择?
- vuexfire - Vuexfire:bindFirestoreRef 触发多少次读取?
- php - Foreach with Table - PHP 和 Leaguepedia API
- sql - 如果未设置值,SQLite 将具有匹配校验和的记录设置为相同的值
- flutter - 使用 Positioned inside Stack 无法正常工作
- javascript - 重新加载数据表jquery时处理指示器不起作用
- acumatica - Acumatica:是否有可能以及如何在 AR521000 屏幕中自定义网格?