小编Les*_*tat的帖子

带有scene2d和actor的libgdx没有显示精灵

我正在测试Libgdx和Scene2d.我希望这个小程序能够显示一个标志,但它只画了一个黑屏.知道我错过了什么吗?

public class MyGame implements ApplicationListener {
    private Stage stage;

    @Override
    public void create() {
        stage = new Stage(800, 800, false);
        Gdx.input.setInputProcessor(stage);
        MyActor actor = new MyActor();
        stage.addActor(actor);
    }

    @Override
    public void render() {
        Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT);
        stage.act(Gdx.graphics.getDeltaTime());
        stage.draw();
    }

    @Override
    public void dispose() {
        stage.dispose();
    }

    @Override
    public void resize(int width, int height) {
            stage.setViewport(800, 800, false);
    }
}


public class MyActor extends Actor {
    Sprite sprite;

    public MyActor() {
        sprite = new Sprite();
        sprite.setTexture(new Texture("data/libgdx.png"));

        setWidth(sprite.getWidth());
        setHeight(sprite.getHeight());
        setBounds(0, 0, getWidth(), …
Run Code Online (Sandbox Code Playgroud)

java libgdx scene2d

3
推荐指数
1
解决办法
1万
查看次数

从manifest生成R.java时出错

从manifest生成R.java时出错

这是什么意思?以及我如何解决它?

[ERROR] Error generating R.java from manifest
[ERROR]:Project failed to build after 937ms
Run Code Online (Sandbox Code Playgroud)

titanium titanium-mobile

3
推荐指数
1
解决办法
4947
查看次数

更改libgdx中的渲染频率

我有一个问题可以改变渲染方法的频率.我找到了这个:

默认情况下,在libgdx中,呈现线程会连续调用ApplicationListener类的render()方法,其频率取决于您的硬件(每秒30-50-80次).我用

Gdx.graphics.setContinuousRendering(false);
Run Code Online (Sandbox Code Playgroud)

在我的create方法中,如果用户触摸屏幕,渲染就会停止并启动.但我希望以每秒1次的速度减慢频率.是否可以解决此问题,或者我只能使用render方法的默认设置.我搜索但没有找到解决方案.感谢帮助.

java render libgdx

3
推荐指数
1
解决办法
1310
查看次数

libgdx位置窗口在舞台之外

我想知道如何使用MoveToAction(或任何方法)将stage2d窗口定位在舞台之外.我希望菜单可以滑入和滑出.
我的舞台和我的皮肤存储在我的世界级.

这些方法现在工作正常,但根本没有动画:

Window window = new Window("NoteBook", world.skin);
    ...

public void closeBook() {
    window.remove();
}

public void openBook() {
    world.stage.addActor(window);
}
Run Code Online (Sandbox Code Playgroud)

这就是我试图更新这些函数以允许动画的方法.这里的窗口已经在init期间添加到舞台一次,因此这些方法只处理动画.

public void closeBook() {
    MoveToAction action = new MoveToAction();
    action.setPosition(-200, -200);         // somewhere off screen
    action.setDuration(0.5f);
    window.addAction(action);
}

public void openBook() {
    MoveToAction action = new MoveToAction();
    action.setPosition(0, 0);           // original location
    action.setDuration(0.5f);
    window.addAction(action);
}
Run Code Online (Sandbox Code Playgroud)

这似乎部分有效,因为它确实为窗口的运动设置了动画,但它停在屏幕的边缘并且不会突破它.我已经尝试调整我的舞台的视口尺寸,但它仍然始终停在边缘.

所以问题是,如何在舞台外(或看似外面)放置一个scene2d窗口?

java animation libgdx scene2d

3
推荐指数
1
解决办法
1444
查看次数

我如何管理 2 个不同商店的 2 个不同版本,这需要在它们之间进行一些代码更改

假设我想在 Steam 和 Epic Games 上发布我的游戏。两者都有一个包含某些服务(例如匹配)的 SDK。

我不想制作两个项目并基本上维护它们只是为了能够实现这一目标。如何根据我正在构建的版本(Steam 版本或 Epic Games 版本)激活/停用某些代码。我读到了 #if 指令,但这些指令似乎仅在检查构建目标平台(Android 等)时才起作用。

  • 我可以利用这些指令来实现我的目标吗?
  • 我可以包含两个 SDK 并通过代码检查它是 Steam 还是 Epic 版本,并以某种方式相应地初始化正确的版本吗?

unity-game-engine

3
推荐指数
1
解决办法
499
查看次数

在Libgdx中加载Obj文件不能在android上运行

以下代码显示了一个慢慢旋转并显示的圆环:

package com.objloader.example;

import ...
public class ObjLoaderProg implements ApplicationListener{
    String torus;
    Mesh model;
    private PerspectiveCamera camera;
    @Override
    public void create() {
        InputStream stream=null;
        try {
            stream = new FileInputStream(Gdx.files.internal("data/torus.obj").path());
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        model = ObjLoader.loadObj(stream, true);
        Gdx.gl.glEnable(GL10.GL_DEPTH_TEST);
        Gdx.gl10.glTranslatef(0.0f,0.0f,-3.0f);
    }

    @Override
    public void dispose() {
    }

    @Override
    public void pause() {
    }

    protected int lastTouchX;
    protected int lastTouchY;
    protected float rotateZ=0.01f;
    protected float increment=0.01f;

    @Override
    public void render() {
        Gdx.gl.glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
        Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT); …
Run Code Online (Sandbox Code Playgroud)

java file-io android opengl-es libgdx

2
推荐指数
1
解决办法
5948
查看次数

Libgdx,物理,加速和FPS

我在Libgdx框架中制作平台游戏.我想实现跳到我的角色的能力.我使用简单的公式:

speed += acceleration * delta_time
r += speed * delta_time
Run Code Online (Sandbox Code Playgroud)

它运行良好,但仅适用于每秒恒定帧数.FPS越低,我的角色越低.我不知道这种行为的原因是什么,跳跃的高度应该是相同的:/我的代码片段:

delta_time=Gdx.graphics.getDeltaTime();
if(input.getUpArrow()){
     if(is_in_air==false){
        is_in_air=true;
        speed_y=speed_y_0;
     }
  }

  if(is_in_air==true){
     speed_y-=acceleration*delta_time;
  }
  else{
     speed_y=0;
  }

  x+=speed_x*delta_time;
  y+=speed_y*delta_time;
Run Code Online (Sandbox Code Playgroud)

这里有一个插图(黑点是字符位置):http: //i.imgur.com/tfSTM.jpg

java physics frame-rate acceleration libgdx

2
推荐指数
1
解决办法
2715
查看次数

Libgdx Actor不响应输入

我这样定义了新演员:

class MyActor extends Image
{
    Texture texMyActor;

    public MyActor()
    {
        super.setTouchable(Touchable.enabled);
        texMyActor = new Texture("data/myActor.png");
        addListener(new InputListener()
        {
            public boolean touchDown(InputEvent event, float x, float y,
                    int pointer, int button)
            {
                System.out.println("down");
                return true;
            }

            public void touchUp(InputEvent event, float x, float y,
                    int pointer, int button)
            {
                System.out.println("up");
            }
        });
    }

    @Override
    public void act(float delta)
    {
        super.act(delta);
    }

    @Override
    public void draw(SpriteBatch batch, float parentAlpha)
    {
        batch.draw(texMyActor, 200, 200);
    }
}
Run Code Online (Sandbox Code Playgroud)

我还添加了演员到舞台,注册舞台作为当前输入处理器.然后我调用stage.act(deltaTime)和stage.draw().我看到我的演员,但它没有响应输入我的代码有什么问题?:?:

java libgdx

2
推荐指数
1
解决办法
2408
查看次数

如何将广告置于屏幕底部中央(libgdx + AdMob)

我正在使用libgdx和AdMob.我无法将广告置于屏幕底部的中心位置.在当前的设置中,我将它放在屏幕的左下角,但它不会居中.

我的MainActivity中的代码

 // Add the AdMob view
    RelativeLayout.LayoutParams adParams = 
            new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, 
                            RelativeLayout.LayoutParams.WRAP_CONTENT);
    adParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
    adParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
    adParams.addRule(RelativeLayout.CENTER_IN_PARENT);

    layout.addView(adView, adParams);
Run Code Online (Sandbox Code Playgroud)

android admob android-layout libgdx

2
推荐指数
1
解决办法
2482
查看次数

如何结合scene2d和box2d?

我使用 box2d 并想在屏幕上添加一些按钮。我认为最简单的方法是使用 scene2d 作为按钮。是否有可能将这两者结合起来,如果是的话,该怎么做?我是 box2d 的新手,我看过的所有教程都没有任何这方面的示例。

java box2d libgdx scene2d

2
推荐指数
1
解决办法
1249
查看次数