我之前从未真正做过很多游戏编程,这是一个非常简单的问题。
想象一下,我正在构建一个俄罗斯方块游戏,主循环看起来像这样。
for every frame
handle input
if it's time to make the current block move down a row
if we can move the block
move the block
else
remove all complete rows
move rows down so there are no gaps
if we can spawn a new block
spawn a new current block
else
game over
到目前为止,游戏中的所有事情都是立即发生的-事情立即产生,行被立即删除等。但是,如果我不希望事情立即发生(动画)。
for every frame
handle input
if it's time to make the current block move down a row
if we can move the block
move the block
else
?? animate complete rows disappearing (somehow, wait over multiple frames until the animation is done)
?? animate rows moving downwards (and again, wait over multiple frames)
if we can spawn a new block
spawn a new current block
else
game over
在我的Pong克隆中,这不是问题,因为每帧我都在移动球并检查是否有碰撞。
我该如何解决这个问题?当然,大多数游戏所涉及的某些动作所花费的时间超过一帧,而其他事情则停下来,直到动作完成为止。
Action
类和一系列要执行的动作。当一个动作完成后,将其从队列中删除并执行下一个动作等。比状态机更灵活。