回合制游戏中世界状态和动画的分离
在回合制游戏中,您如何处理动画与世界状态的分离?我目前正在开发基于2D网格的游戏。下面的代码被简化以更好地说明。 当演员移动时,我想在生物动画并移动到新位置时暂停转弯流程。否则,屏幕可能会大大落后于世界状态,从而导致奇怪的视觉外观。我还希望动画不会阻塞游戏的流程-粒子效果可以在多个回合中展开而不会影响游戏玩法。 我要做的是介绍两种类型的动画,分别称为阻塞动画和非阻塞动画。当玩家想要移动时,执行的代码是 class Actor { void move(PositionInfo oldPosition, PositionInfo newPosition) { if(isValidMove(oldPosition, newPosition) { getGame().pushBlockingAnimation(new MoveAnimation(this, oldPosition, newPosition, ....)); player.setPosition(newPosition); } } } 然后,主更新循环执行以下操作: class Game { void update(float dt) { updateNonBlockingAnimations(dt); //Effects like particle explosions, damage numbers, etc. Things that don't block the flow of turns. if(!mBlockingAnimations.empty()) { …