一个值不减少

main.lua中我有这个:

function love.load()
  LoadBasic()
  LoadSprites()
  LoadPlayer()
  LoadZombies()
end

function love.update(dt)
  PlayerMovement(dt)
  ZombieMovement(dt)
  BulletMovement(dt)

  BulletHitZombie()
  EnemySpawning(dt)
end

function love.draw()
  DrawBackground()
  DrawPlayer()
  DrawMenu()
  DrawGrunts()
  DrawBullets()

  DrawTimer()
end

EnemySpawning()看起来像这样:

function EnemySpawning(dt)
  如果gameActive == 1 then
    GruntSpawning(dt)
    RunnerSpawning(dt)
  end
end

GruntSpawning(dt)看起来像这样:

function GruntSpawning(dt)
  gruntTimer = gruntTimer - dt
    如果gruntTimer <= 0整体减速,生成僵尸
      SpawnGrunt()
      如果gruntCD >= gruntMinCD then
        gruntCD = gruntCD * gruntTimerDecr --随着时间的推移,僵尸的出现速度加快
        gruntTimer = gruntCD
      else
        gruntTimer = gruntMinCD --在一定程度上更快
      end
    end
end

最后,SpawnGrunt()看起来像这样:

function SpawnGrunt()
  local side = math.random(1, 4)

  如果side == 1 then
    grunt.x = -30
    grunt.y = math.random(0, scrHeight)
  elseif side == 2 then
    grunt.x = math.random(0, scrWidth)
    grunt.y = -30
  elseif side == 3 then
    grunt.x = scrWidth + 30
    grunt.y = math.random(0, scrHeight)
  else
    grunt.x = math.random( 0, scrWidth )
    grunt.y = scrHeight + 30
  end

  table.insert( zombies, grunt )
end

据我理解,love.update(dt)每秒调用60次(或者根据FPS的设定)。由于我将EnemySpawning(dt)放在love.update()中,所以该函数也被调用60次/秒。然而,应该每秒减少1的gruntTimer没有改变。我做错了什么?

编辑:最后问题在于,gameState == 1没有成立,因为它应该是gameState == true

点赞
用户17783369
用户17783369

尝试:

function GruntSpawning(dt)
  Time = Time + dt
  if Time > 1 then -- 检查是否过了一秒钟
    gruntTimer = gruntTimer - 1
    Time = 0
  end
  if gruntTimer <= 0 then
    SpawnGrunt()
    if gruntCD >= gruntMinCD then
      gruntCD = gruntCD * gruntTimerDecr
      gruntTimer = gruntCD
    else
      gruntTimer = gruntMinCD
    end
  end
end

不要忘记在 love.load() 中将 Time 设为 0。

2022-05-01 12:01:03