2017-04-16 34 views
0

我正在制作这款游戏​​,它涉及到敌人。对于他们来说保持相同的速度是相当无聊的,所以我希望当玩家得分更高时敌人的速度会增加。用爱来制作某些算法是很困难的,因为大多数情况下,每一帧都用这个游戏引擎更新。这就是现在实际给我的问题。Love2D值更新太快

我的逻辑的第一部分是正确的(其中player_scoreenemy.speed增加经过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增加了每一帧,我得到了同样的结果作为我的第一个错误。

回答

0

你的错误是内enemySpeedUp()功能权限初始化scoreLimit0
将该作业移出,在设置初始值player_score的相同位置进行。

+0

omg,非常感谢你,我甚至没有意识到我正在那样做。 @Vlad –