它再次成为我:)
我目前正试图让我的libGDX游戏完成。但是,我一直坚持使用两个屏幕的过渡,所以我想要这样,例如当我开始游戏并淡入游戏屏幕时,淡出菜单屏幕。我没有使用Scene2D,也不熟悉舞台和演员。如果有人能帮助我并解决问题,我会很高兴。
提前致谢! :)
答案 0 :(得分:1)
Scene2D
的情况下实现目标。无论如何,构建积木系统的工作稍微多一些,但最后还是值得的。
概念是拥有游戏屏幕管理器,它将管理您将在游戏中运行的游戏屏幕。这是说的。当您从一个屏幕转换到另一个屏幕时,您需要这样的游戏屏幕管理器来控制哪个游戏屏幕能够draw
,哪个能够update
。< / p>
通常你会有这样的经理管理你的游戏画面。但我们可以进一步利用它来实现屏幕过渡效果。
当过渡效应开始时,这种控制能力将发挥重要作用。
对于淡入/淡出效果,我们假设您将T
定义为当一个屏幕转换为另一个屏幕时完成的总时间,A
是开始屏幕,B
是目标屏幕,而M
是游戏屏幕管理员,背后的逻辑将如下
A
直到T/2
的总时间过去,然后您开始淡入B
。在此操作开始时,M
仅允许A
update()
自己的游戏逻辑,但同时允许A
和B
到draw()
到后面的缓冲屏幕上。因此A
可以更新自己的逻辑代码,但两个屏幕都可以绘制。T/2
的另一个持续时间过去(现在总共为T
)时,您允许B
能够update()
。这意味着游戏逻辑开始在B
内进行,A
将被处理,因为我们不再需要了。A
和B
绘制内容您可能会质疑我们如何以alpha方式绘制整个内容。我们应该搞乱自定义着色器编程吗?没必要。我们仍然使用SpriteBatch
。
这样做的方法是首先通常绘制这种游戏画面的内容,然后我们绘制一个大小为2x2像素的黑色纹理(不需要像屏幕分辨率那样大),顶部有alpha。
这种alpha值将通过我们在过渡效应中使用的机制动态计算。使用此技术,首先从A
和B
绘制内容,然后在屏幕上方使用Alpha值绘制黑色纹理,以实现淡入/淡出过渡效果。
按照以下步骤的指导来实现我上面描述的内容。我不打算详细说明。但是这些步骤可能会让您了解实施并不困难。
TransitionState
课程。这个类最少接受两个参数,即开始游戏画面和目标游戏画面(其他是衰落的持续时间,过渡效果类型等),以执行逻辑,如上面 Concept 和中所述。如何绘制...... 部分。简而言之,这个类只是游戏的另一个游戏屏幕(或说游戏状态),但是当你需要从一个游戏屏幕转换到另一个屏幕时,它将同时管理两个游戏屏幕。您可以进一步扩展此想法,以包含更多类型的过渡效果。因此,TransitionState
类将为您构建一个屏幕转换块。您可以在Youtube上查看ForeignGuyMike的OMO教程。你可以从头开始创建与他类似的代码库,或者看一下他开始在这个类上编码的确切episode starting at 31:08。他还在剧集中有一个代码完成的项目文件,所以你可以看看他是如何实现的。TransitionState
的新实例,然后使用开始和目标游戏屏幕为它们提供信息。这是告诉游戏切换屏幕的方法。在幕后,需要时间淡出,然后处置旧的游戏画面(淡出),然后完全切换到目标游戏画面。继续正常。这就是全部。请不要害怕我在这里输入的冗长文本,就像你得到核心概念一样,你可以继续自己实现,但你需要了解libgdx的基本构建块才能使用它。 / p>
祝你好好实施。
答案 1 :(得分:0)