【问题标题】:Collision: "death" animation碰撞:“死亡”动画
【发布时间】:2015-12-09 21:51:47
【问题描述】:

我有一个 Corona SDK 项目,它试图为敌人播放死亡动画:

elseif name1 == "enemy" or name2 == "enemy" then
    if name1 == "enemy" then
        if player.y < event.object1.y-(event.object1.height*0.5) then 
            display.remove(event.object1); event.object1 = nil
            changeText(10)
        else
            print( "trigger animation" )
            event.object1:setSequence("explode") --Not working
            event.object1:play()
            gameOver()      
        end
    else

所以在else 中,它应该会触发动画更改但没有任何反应。调试print 确实发生了。

精灵表看起来像:

local enemySheet = graphics.newImageSheet("images/enemies.png", sheetInfoEnemy:getSheet() )
local enemySprite = 
{ name="stand", start=1, count=31, time = 1000, loopCount = 0 },
{ name="explode", start=32, count=25, time=800, loopCount=1 }   

正常的stand 动画播放也很好。

我错过了什么?正在发生碰撞,正在调用 gameOver,但未播放 explode 动画。

【问题讨论】:

  • Lua 不能将多个值分配给单个变量。 enemySprite 只会获取第一个值(以 stand 为名称的表)。也许您的意思是分配一个值表?
  • @rpattiso 哇,你是对的。我错过了{ }。随意回答!

标签: lua coronasdk collision-detection


【解决方案1】:

此代码仅将第一个表分配给enemySprite

local enemySprite = 
   { name="stand", start=1, count=31, time = 1000, loopCount = 0 },
   { name="explode", start=32, count=25, time=800, loopCount=1 }   

Lua 将评估这两个表,但第二个在分配时被默默地丢弃。要解决此问题,请将两个表存储在另一个表中:

local enemySprite = {
   { name="stand", start=1, count=31, time = 1000, loopCount = 0 },
   { name="explode", start=32, count=25, time=800, loopCount=1 } 
}

您可能需要调整使用enemySprite(未显示)的代码以使用新表。

【讨论】:

    猜你喜欢
    • 2013-09-04
    • 2017-04-25
    • 1970-01-01
    • 1970-01-01
    • 2014-12-29
    • 2017-11-07
    • 2013-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多