【问题标题】:Corona sdk having trouble stopping timers on individual spawned objectsCorona sdk 无法在单个生成的对象上停止计时器
【发布时间】:2023-03-28 15:15:01
【问题描述】:

我有一个节拍游戏,如果敌人与我的角色发生碰撞,计时器上会播放“punch”声音,如下所示:

local function hitSound()
local hsound = math.random(#sfx.hit)
audio.play(sfx.hit[hsound])
end

----------------------------------- ---字符冲突---------------

local function guyCollision(self, event)
if event.other.type == "enemy1"then

if event.phase == "began" then
hitTimer = timer.performWithDelay(500,hitSound,0)
event.other:setSequence("punch")
event.other:play()
end

if event.phase == "ended" then
timer.pause(hitTimer)
end

当我的角色一次只击倒一个敌人时,这很好用,但如果有多个生成的敌人(通常是这样)在我杀死我的角色时与他们战斗,那么冲击声仍然存在。 此外,当我的角色死亡时我调用 audio.fadeout() 时,打孔声音不会随着其他声音/音乐淡出:s

有人建议我使用其表中的索引将计时器分配给有问题的特定敌人,但我不确定如何执行此操作...这是最好的方法吗?我只是不知道如何获得敌人的当前索引.. 非常感谢任何帮助!

这是我的敌人生成代码:

local spawnTable2 = {}


local function spawnEnemy()
enemy1 = display.newSprite( group, sheetE, sequenceData2 )
enemy1.x=math.random(100,1300)
enemy1.y=math.random(360,760)
enemy1.gravityScale = 0
enemy1:play()
enemy1.type="coin"
enemy1.objTable = spawnTable2
enemy1.index = #enemy1.objTable + 1
enemy1.myName = "enemy" .. enemy1.index
physics.addBody( enemy1, "kinematic",{ density = 1.0, friction = 0.3, bounce = 0.2 })
enemy1.isFixedRotation = true
enemy1.type = "enemy1"
enemy1.enterFrame = moveEnemy
Runtime:addEventListener("enterFrame",enemy1)
enemy1.objTable[enemy1.index] = enemy1
return enemy1
end

【问题讨论】:

    标签: timer lua coronasdk


    【解决方案1】:

    我认为你的问题是你的 hitTimer 变量可能被覆盖了,你只能取消最后一个。您可能可以这样做:self.hitTimer 来绕过它。

    罗伯

    【讨论】:

    • 谢谢 rob,self.timer 不起作用,因为碰撞发生在主角身上,而不是敌人身上。我通过使用 event.other.timer 和 timer.cancel (event.other.timer) 让它工作。我现在遇到的问题是当我的角色死亡并且 audio.fadeOut 被称为冲压不会淡出时。我已经尝试设置enemy1.timer=nil 和timer.cancel(enemy1) (发生错误)但它仍然可以播放,当我暂停游戏并且audio.pause 被称为打孔没有暂停时,我已经解决了这个bu 设置主音量为零,但这对于我的角色死亡时不可行..有什么建议吗?
    • 顺便说一句,当我的角色死亡时,我会阻止敌人生成,所以新的碰撞不是问题
    猜你喜欢
    • 2015-01-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-09
    • 2017-10-09
    • 1970-01-01
    相关资源
    最近更新 更多