我的游戏开始时有一个启动/加载屏幕。首先,我使用AssetManager加载我的资产,之后,我想将Screens加载到内存中。目前,我是这样做的:
menuState = new MenuState(game);
playState = new PlayState(game);
gameOverState = new GameOverState(game);
现在我想用fadeIn和fadeOut Animation显示MenuState。这工作正常,但此动画的进度基于当前增量。对于接下来的几次渲染调用,我得到了如此高的delta,根本没有可见的动画。
我不明白,为什么有一个高delta不仅适用于下一个渲染调用(加载所有这些状态需要时间,但是当它们完成加载时无需再做任何事情)但也适用于下一个几次渲染电话。
如何加载这些加载后delta低的屏幕?
答案 0 :(得分:2)
在考虑delta
的动画中,你可以引入一个"最大值"三角洲。这将有所帮助,因此您的动画不会被跳过,但最初可能仍然显得有些迟钝。
LibGDX
Stage.java
源代码中使用了类似的方法
public void act () {
act(Math.min(Gdx.graphics.getDeltaTime(), 1 / 30f));
}
public void act (float delta) {
//does stuff
}
Math.min
将采用deltaTime
或1/30f
的较小值,以确保即使每帧实际上花费很长时间,它也会以较小的增量进行更新。