Love2D值更新速度过快

时间:2017-04-16 05:17:20

标签: performance methods lua love2d

我正在制作这个游戏,它涉及敌人。他们保持相同的速度是非常无聊的,所以我希望随着玩家得分越高,敌人的速度越快。用爱来制作某些算法是很困难的,因为大多数情况都是用这个游戏引擎每帧更新。这就是现在实际上给我的问题。

我的逻辑的第一部分是正确的(enemy.speedplayer_score通过10后增加的部分)但是一旦它通过(或到达)10,enemy.speed值将每帧继续增加10点。即使我使用了enemiesReadyToSpeedUp布尔值,因为这个原因! (阻止enemy.speed快速增加)

因此,一旦玩家得分超过10,游戏就会变得无法玩,因为敌人开始以“光速”移动。

function enemySpeedUp()

    -- Once player score > scoreLimit + 10, enemy's speed will increase by 10, 
    -- and the scoreLimit will increase by 10

    enemiesReadyToSpeedUp = false
    scoreLimit = 0

    if(player_score >= scoreLimit + 10) then
        enemiesReadyToSpeedUp = true
    end

    if(enemiesReadyToSpeedUp == true)then
        enemy.speed = enemy.speed + 10
        scoreLimit = scoreLimit + 10
        enemiesReadyToSpeedUp = false
    end
end

我尝试过的事情:

  • 在没有任何布尔值的情况下编写此函数几乎相同。 (这意味着一旦玩家的速度超过10,我就会增加敌人的速度,而不是使布尔值为真,然后根据布尔值增加敌人的速度)
  • 对敌人需要加速的每种可能组合进行硬编码。但这需要大量的if语句,效率非常低,并且通常也只是糟糕的编码实践。但它确实有效,而且我实际上正在考虑这样做,如果没有别的办法。
  • 最后,我也试过了enemy.speed = enemy.speed + player_speed,但这是一个非常明显的错误,因为enemy.speed每一帧都增加了,我得到的结果与我的第一个错误相同。

1 个答案:

答案 0 :(得分:0)

您的错误是在scoreLimit函数内0初始化enemySpeedUp() 移出该分配,在您设置初始player_score值的相同位置执行此操作。