Tag: libgdx

libgdx实现InputProcessor的多个对象

所以在我的Screen我有两个相同类的对象,它们使用以下keyDown() method实现InputProcessor: @Override public boolean keyDown(int keycode) { if (keycode==fireKey) { System.out.println(“Reporting keydown “+keyCode); } return false; } 问题是当我实例化这两个对象时,只有最后一个实例接收到任何keyDown事件。 我需要两个对象(或者有许多对象)来接收keyDown事件。

(Libgdx 1.6.1)由于索引超出范围,BitmapFontCache.draw崩溃

我刚刚将我的Libgdx项目从1.4.x更新到1.6.1。 我在我的游戏中使用BitmapFontCache进行对话,使用BitmapFontCache.draw(开始,结束)按字符绘制字符串字符。 这在1.4.x中工作正常,但在进行必要的更改以获得1.6.1构建之后,在显示最后一个字符后启用换行时,似乎会导致崩溃。 奇怪的是,这似乎不是一个线串的问题。 以下是我添加文字的方法: fontCache.addText( message, fontPosX, fontPosY, fontWidth, Align.left, true); 然后我增加字符数并绘制。 currentCharacter在根据字符串长度到达字符串末尾时停止: fontCache.draw( batch, 0, currentCharacter ); 这在1.4.x中运行良好,即使使用多行换行,但如果行换行到第二行(在绘制最后一个字符后崩溃),似乎会导致出界exception。 这是导致SpriteBatch崩溃的行。 System.arraycopy(spriteVertices, offset, vertices, idx, copyCount); 我需要一种新的方法来计算绘制字符串的长度吗? 我是否需要以某种方式使用返回GlyphLayout? 或者这可能是一个错误?

使用Thread.sleep()限制Libgdx游戏中的FPS不起作用

我正在为libgdx开发一款针对android的小游戏,并希望将fps限制为30以节省电池。 问题是它不起作用。 fps从60下降到56。 以下是代码的一部分:(它位于渲染部分的末尾) System.out.print(“\nFPS: ” + Gdx.graphics.getFramesPerSecond() + “\n”); if(Gdx.graphics.getDeltaTime() < 1f/30f) { System.out.print("DeltaTime: " + Gdx.graphics.getDeltaTime() + " s\n"); float sleep = (1f/30f-Gdx.graphics.getDeltaTime())*1000; System.out.print("sleep: " + sleep + " ms\n"); try { Thread.sleep((long) sleep); } catch (InterruptedException e) { System.out.print("Error…"); e.printStackTrace(); } } 这是输出: FPS: 56 DeltaTime: 0.014401722 s sleep: 18.931612 ms FPS: […]

无头/ CLI LibGDX

我正在为一个小型的LibGDX游戏编写服务器端代码,并且偶然发现了一个问题。 每次我尝试使用任何Gdx.files.*方法时,我都遇到了NullPointerException 。 显然这是因为我没有实现ApplicationListener,所以LibGDX尚未初始化。 有没有办法以无头/ CLI方式初始化LibGDX? 我需要能够在服务器端加载TiledMap对象。 MapLoader(Request request) { TiledMap tmp = new TmxMapLoader().load(“maps/” + request.name + “.tmx”); } com.esotericsoftware.kryonet.Server $ 1.received(Server.java:60)at com.tester.Example.server.ExampleServer $ 2.received(MapLoader.java:83)中的线程“Server”java.lang.NullPointerException中的exceptioncom.esotericsoftware.kryonet.Connection.notifyReceived(Connection.java:246)at com.esotericsoftware.kryonet.Server.update(Server.java:202)at com.esotericsoftware.kryonet.Server.run(Server.java:350)在java.lang.Thread.run(Thread.java:722)

Libgdx如何获取目录中的文件列表?

所以我试图用文件handle.list()方法获取目录中的文件列表,但即使目录中有文件,它也会返回一个空列表。 对我来说似乎很奇怪的是它确实在设备上工作但它在桌面上不起作用。 我想我知道问题是什么,但我不知道如何解决它。 在方法描述中,它说“在桌面上,类路径上的目录的FileType.Internal句柄将返回一个零长度数组。”,但没有其他方法,所以你认为我能做什么?

如何在Libgdx中调整sprite的大小?

我在sprite.setSize(float x, float y)的方法sprite.setSize(float x, float y)有问题。 它不会影响精灵的大小或尺寸。 无论我传递给setSize()方法,它们都保持固定。 这是我的代码 : public class GameScreen implements Screen { OrthographicCamera camera; SpriteBatch batch; Texture carTexture; Sprite carSprite; public GameScreen() { } @Override public void render(float delta) { // TODO Auto-generated method stub Gdx.gl.glClearColor(0,0,0,0); Gdx.gl.glClear(GL10.GL_COLOR_BUFFER_BIT); batch.begin(); carSprite.setSize(16, 32); batch.draw(carSprite, 0 , 0); batch.end(); camera.update(); } @Override public void […]

屏幕之间切换Libgdx

嘿大家我还在研究这个libgdx项目,我正在试图找出将屏幕更改为我的游戏画面的最佳方法现在,当点击一个按钮时,我需要它转换到游戏画面。 我已经看到了一些扩展游戏类的实现,但我不确定这里最好的方法是什么。 如果您看到一些可以改进的代码,请告诉我们。 这是主要的应用程序类: public class ConnectFourApplication implements ApplicationListener { private Screen screen; public static void main(String[] args) { new LwjglApplication(new ConnectFourApplication(), “PennyPop”, 1280, 720, true); } @Override public void create() { screen = new MainScreen(); screen.show(); } @Override public void dispose() { screen.hide(); screen.dispose(); } /** Clears the screen with a white color */ […]

错误:(2,0)找不到ID为’jetty’的插件

昨天我将Android Studio升级到3.0版,但我正在使用LibGdx,升级后我无法构建我的项目。 当我尝试构建时,它给了我一个错误: 错误:(2,0)找不到ID为’jetty’的插件 我该怎么解决这个问题?

libgdx中的Circle-Rectangle碰撞侧检测

我花了几个小时寻找解决方案:我正在用libgdx开发一个小型自上而下的游戏(也许这对我使用的引擎很重要)。 现在我必须在我的角色(圆圈)和墙壁(矩形)之间实现碰撞检测。 如果可以滑动,我希望角色在碰撞时沿着墙壁滑动。 让我解释: 如果我向上移动45度,我可以与墙的左下角碰撞。 如果我与左侧发生碰撞,我想停止x移动并向上移动。 如果我离开墙壁,那么我想继续前进。 与下侧相同(停止y运动) 如果我与角落碰撞我想停止运动(滑动不可能)。 我实际上做的是检查矩形的左边是否与我的圆相交。 然后我检查左边的墙和我的圆圈以及墙的底线和我的圆圈之间的交叉点。 根据哪个交叉点出现,我设置了我的圆圈的x / y,并将x / y速度设置为0.问题是,大多数情况下不是碰撞而是发生 重叠 。 所以底部检查返回true,即使实际上圆圈只会与右边碰撞。 在这种情况下,两个交叉点测试都将返回true,我将重置两个速度,就像在Corner碰撞中一样。 我怎么解决这个问题? 是否有更好的方法来检测碰撞和碰撞的侧面或角落? 我不需要在矩形的一侧确切的碰撞点。 编辑:我不得不说,rects不是平行于x轴旋转。

LibGDX中的分屏

这个问题简短而简单。 如何在LibGDX中创建分屏效果。 如果我创建两个摄像头,那么它将绘制一个位于某个地方,然后绘制下一个,覆盖前一个摄像头。 然后我想使用多个屏幕,但看起来它不会起作用,因为它只支持resize而不是在窗口内重新定位。 我也使用Box2DDebugRenderer以及ShapeRenderer,因此它还需要在分屏限制下切断它们。 LibGDX网站上似乎没有任何文档。