如何从菜单切换到3D FPS设置? (libGDX)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何从菜单切换到3D FPS设置? (libGDX)相关的知识,希望对你有一定的参考价值。

我正在练习和编写一个简单的菜单,只需按一下按钮即可切换到主游戏。

主游戏采用3D格式,使用libGDX用于创建3D环境的所有功能。菜单使用Stage构建。我分别构建了Menu和Render / FirstPerson类,以确保它们自己工作,并且确实完成了它们。

package com.mygdx.game;

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.GL20;
import com.mygdx.game.FPSSystem;
import com.mygdx.game.RenderingSystem;

public class MainCoreLoop extends ApplicationAdapter {

    public MenuSystem menuSystem;
    public RenderingSystem renderingSystem;
    public FPSSystem fpsSystem;

    public boolean isGameOn;

    @Override
    public void create () {
        renderingSystem = new RenderingSystem();
        fpsSystem = new FPSSystem();
        menuSystem = new MenuSystem();

        renderingSystem.create();
        fpsSystem.create();
        menuSystem.create();
    }


    @Override
    public void render () {
        isGameOn = true;

        if (MenuSystem.isMenuClosed == true) {
            isGameOn = true;
        }

        else if(isGameOn == false) {
            Gdx.gl.glClearColor(0, 255, 0, 0);
            Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);


            menuSystem.render();
        }

        if(isGameOn == true) { 
            Gdx.gl.glClearColor(255, 0, 0, 0);
            Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT|GL20.GL_DEPTH_BUFFER_BIT);

            fpsSystem.render();
            renderingSystem.render();


            }

    }

    @Override
    public void dispose() {
        menuSystem.dispose();
        fpsSystem.dispose();
        renderingSystem.dispose();

    }

}

我有一个处理渲染的RenderingSystem类,一个FirstPersonSystem类初始化另一个类FPSCameraController类,它控制逻辑和输入,代码借用了libGDX附带的FirstPersonCameraController类。

所以我可以一起测试这些类,我使用了一个名为isGameOn的布尔值,它运行得很好。经过一段时间的测试和重构,我设法让一切工作除了输入。按下“新游戏”后,3D框会完美呈现,但输入不起作用。如果我将布尔值更改为true,它将呈现框但仍然没有输入。

代码似乎独立工作,但试图将它们组合在一起对我来说有点棘手。

我认为这可能是一个代码顺序问题,但我很难过。我是libGDX的新手,而且我过去一直都在认真地工作过Java,所以我的代码基础可能会阻止我搞清楚这一点。

其余代码在github Here

任何帮助洞察力/侮辱将非常感激。谢谢!

答案

answered one problem关于在LibGdx中使用GameScreen类来使切换更好,这可能对你的情况有所帮助。

该片段的Game/Screen tutorial使用Gdx.input.方法进行鼠标,键盘和触摸事件。

其余的应该是相当简单的。

以上是关于如何从菜单切换到3D FPS设置? (libGDX)的主要内容,如果未能解决你的问题,请参考以下文章

LibGdx太多FPS。如何限制?

如何在 Linux 上设置 LibGDX 的 fbx-conv

我在我的 libgdx_project 中使用 FBO 渲染图像传递模糊着色器,fps 下降到 20。为啥?

Libgdx - 如何旋转 3d 粒子的发射轨迹

Libgdx之Game场景切换Screen

LibGDX:如何从主游戏屏幕重复显示/隐藏覆盖弹出菜单