Articles of libgdx

如何在Libgdx中使用HyperLink和Actor

我正在使用LibGDX进行问答游戏。 我希望它redirect到一个网站。 我正在使用像Text和Label这样的类来扩展Actor来使用位图Font来写文本。 我不知道如何在本机应用程序中提供一个链接(如html中的锚点)。 不过,我不是很擅长Android,但很了解java。 在android中,我看到stackexchange,我们可以使用Intent或string.xmlconfiguration。 任何人都可以建议我这样做使用在libGDX中的Actor?

如何从.fnt位图字体绘制时正确计算y位置?

我想要渲染文本到位图以后使用它作为贴图纹理。 我已经阅读了libGDX字体绘制代码,并想出了这个: private void writeTextToPixmap(Pixmap destPixmap, Pixmap fontPixmap, BitmapFont.BitmapFontData fontData, int startX, int startY, String text) { int cursor = startX; char[] chars = text.toCharArray(); for(int i = 0; i < chars.length; i++) { BitmapFont.Glyph glyph = fontData.getGlyph(chars[i]); destPixmap.drawPixmap(fontPixmap, glyph.srcX, glyph.srcY, glyph.width, glyph.height, cursor + glyph.xoffset, startY + glyph.yoffset, glyph.width, glyph.height); cursor += glyph.xadvance; } […]

ParticleEffectPool.obtain()不重置粒子

我想在libGDX中使用ParticleEffectPools,但是我遇到了一个奇怪的问题,那就是在池中获得的效果似乎没有被重置。 下面的代码为命名的效果查找现有的ParticleEffectPool,如果需要则创建一个,然后为新创建的Actor获取粒子效果。 粒子效应应该在获取函数中重置(如果你看它的源代码)。 会发生什么情况是第一个效果如预期的那样工作,但是随后的每个效果都会在屏幕上非常短暂地闪烁,就好像它的耗尽时间一样。 public class ParticleEffectActor extends Actor { private static final Map<String, ParticleEffectPool> ParticlePools = new HashMap<>(); private final PooledEffect effect; public ParticleEffectActor(String effectName, float rotation) { if(!ParticlePools.containsKey(effectName)) { ParticleEffect particleEffect = new ParticleEffect(); particleEffect.load(Gdx.files.internal("resources/particles/" + effectName + ".p"), Images.Atlas); ParticlePools.put(effectName, new ParticleEffectPool(particleEffect, 10, 50)); } this.effect = ParticlePools.get(effectName).obtain(); rotation -= 90f; for(ParticleEmitter […]

如何使用warble来打包libgdx和ruby?

我的ruby代码如下 include Java Dir[File.expand_path "#{File.dirname(__FILE__)}/../libs/\*.jar"].each { |x| require x; puts "go"} module LibGDX include_package "com.badlogic.gdx" include_package "com.badlogic.gdx.backends.lwjgl" include_package "com.badlogic.gdx.graphics" end class Game include LibGDX::ApplicationListener @LOG = Game.java.simple_name def create LibGDX::Gdx.app.log(@LOG, "Is a thing") end def resize width, height LibGDX::Gdx.app.log(@LOG, "Resizing game to #{width} by #{height}") end def render LibGDX::Gdx.gl.glClearColor(0, 0, 0, 0) LibGDX::Gdx.gl.glClear(LibGDX::GL20.GL_COLOR_BUFFER_BIT) end def […]

Libgdx InputListenner不起作用

我已经添加了一个InputListener给我的libgdx actor并且已经将这个actor添加到stage 。 stage (及其所有的演员)得到很好的。 问题是我的actor似乎没有收到键盘input,因为当我按键时没有任何反应。 @Override public void show() { stage = new Stage(); player = new Player(); player.setPosition(600, 600); stage.setKeyboardFocus(player); player.addListener(new InputListener(){ @Override public boolean keyDown(InputEvent event, int keyCode) { System.out.println("Key Down"); return true; } }); stage.addActor(player); }

如何处理用户input的启animation面意味着要实现?

我正在阅读关于libgdx的Gustavo Steigert的教程 ,但我有一种感觉,这更像是一个devise问题,而不是专门关于libgdx。 我的问题是关于启animation面。 我可以在没有任何错误的情况下实现他在教程中的内容,但我想添加一些额外的内容。 在我玩过的每个游戏中,当用户左键单击或按Esc时,启动屏幕会消失,所以我试图补充一点(奇怪的是,我找不到像这样的飞溅教程)。 所以,我在我的SplashScreen类中有这个方法: public boolean handleInput() { if (Gdx.input.justTouched()) { game.setScreen(new MenuScreen(game)); return true; } else { return false; } } 起初,我试图让该方法返回void并简单地调用Tyrian主游戏类的render()方法中的splash.handleInput() 。 然而,这是行不通的,因为一旦初始屏幕已经移动, handleInput()仍然会在每个render() handleInput()上调用,如果用户点击菜单button,游戏就会崩溃。 所以,我做了handleInput()返回一个布尔值,并在render()使用此代码: if (onSplash) { if (splash.handleInput()) { onSplash = false; } } onSplash是Tyrian类中的一个布尔值,默认情况下为true。 奇怪的是:当使用handleInput()的void版本时,如果按下菜单上的button(菜单屏幕是下一个屏幕),则游戏将只会崩溃,而如果按下屏幕则不会。 我担心启animation面从来没有被处理过(尽管我目前的解决方法似乎没有显示出来),因为我可以从日志信息被打印到控制台看到菜单屏幕正在每个屏幕点击时创建是handleInput()所做的。 此外,如果我把上面的代码,与splash.dispose(); 结果,游戏将会崩溃。 在游戏中这是一个普遍的行为,如果没有一个我常常接受的清晰的方法来执行它,我就会感到惊讶。 编辑 :我已经把handleInput()改回void并在我的主要游戏文件中使用instanceof关键字。 这是一个更清洁的解决scheme,但我不确定是否最好(这是每个渲染的额外检查!)。 SplashScreen.java public void handleInput() […]

dynamic更改从纵向到横向的游戏

我有多个类实现Screen 。 比方说,我想要主菜单屏幕portrait ,然后是播放屏幕 landscape 。 有没有改变orientationdynamic? 我以为我可以开始另一个Activity并有播放屏幕扩展Game 。 而新的Activity将intialize 播放屏幕 。 但是,显然你不能调用startActivity之类的,显然,因为LibGDX是独立LibGDX平台的。 我使用Gdx.graphics.getWidth()和Gdx.graphics.getHeight()来alignmentSprites和Actors ,使它看起来在不同的设备上是“正确的”。 我也试着分别交换Gdx.graphics.getWidth()和Gdx.graphics.getHeight() ,但似乎无法得到精灵和演员正确的位置。

最佳手机游戏分辨率

什么是最好的景观和肖像分辨率的比例,将适合大多数设备在那里和黑色的酒吧大小将是最低的?

移动和瞄准时如何制作不同的精灵

我想创建自上而下的游戏,你是俄罗斯士兵在libGDX。 玩家用W / A / S / D控制士兵,并用鼠标瞄准。 这样战士就可以侧身跑向敌人。 什么是让他的双腿走向正确的方向,但瞄准武器鼠标指针的最佳途径? 我的想法是让两个精灵,躯干/武器和腿,让他们躺在对方,但我不知道这是否是最好的办法做到这一点。

在BitMapFont上的白色背景

我已经尝试将一个白色的“背景”放在与LibGDX呈现的字体上,但没有成功。 我正在使用font.draw在屏幕上绘制加载的字体,但是我试过的每一种方式,字体只包含一个黑色边框,并且在“内部”上是透明的。 我使用Hiero从libGDX用来呈现字体的.ttf文件制作.fnt文件。 无论如何,我应该从这个应用程序修改,使一个字体有一个白色的背景,而不是透明的? 我想以第二种方式显示字体,虽然你看到的显示只是从Hiero应用预览选项(具有特定的背景)。