小编Les*_*tat的帖子

Libgdx Box2D速度不够快

我有一个矩形,我想快速移动,但出于什么原因,我使用的速度更快似乎仍然很慢.我究竟做错了什么?我也从上面掉了一个圆圈到一个表面,甚至很难我用重力玩它像气球一样下来......

一些声明

float velocity = 10000000f;
static final float BOX_STEP=1/60f;  
static final int BOX_VELOCITY_ITERATIONS=6;  
static final int BOX_POSITION_ITERATIONS=2;  
Run Code Online (Sandbox Code Playgroud)

重力,尝试了一切,他们似乎都很糟糕

world = new World(new Vector2(0,-50),true);

我的对象正在移动到地面

    //ground
    BodyDef groundBodyDef =new BodyDef();  
    groundBodyDef.position.set(new Vector2(0, camera.viewportHeight * .08f));  
    Body groundBody = world.createBody(groundBodyDef);  
    PolygonShape groundBox = new PolygonShape();  
    groundBox.setAsBox((camera.viewportWidth) * 2, camera.viewportHeight * .08f);  
    groundBody.createFixture(groundBox, 0.0f);   
Run Code Online (Sandbox Code Playgroud)

然后这是我的对象:

    //ball
    bodyDef = new BodyDef();  
    bodyDef.type = BodyType.DynamicBody;  
    bodyDef.position.set(new Vector2(camera.viewportWidth * .2f, camera.viewportHeight * .75f));  
    body = world.createBody(bodyDef);  
    CircleShape dynamicCircle = new CircleShape();  
    dynamicCircle.setRadius(camera.viewportWidth * .035f);  
    FixtureDef …
Run Code Online (Sandbox Code Playgroud)

java box2d libgdx

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

Libgdx如何设置PerspectiveCamera的渲染距离?

我已经用相机设置了一个场景

    cam = new PerspectiveCamera(80, w, h);
    cam.position.set(0, 0, -1);
    cam.lookAt(0, 0, 0);
    cam.update();
Run Code Online (Sandbox Code Playgroud)

但是有些场景丢失了,因为它超出了相机的视距.

java 3d graphics libgdx

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

libgdx - 删除Box2d CircleShape上呈现的圆形轮廓

CircleShape circle = new CircleShape();
circle.setRadius(1f);
...
using 
...
batch.draw(textureRegion, position.x - 1, position.y - 1, 
                            1f, 1f,
                            2, 2, 
                            1, 1, 
                            angle);
Run Code Online (Sandbox Code Playgroud)

我使用它来设置Box2d碰撞的主体但是我在libGdx中的纹理周围得到了一个愚蠢的圆形,即我的纹理精灵(球)在它的顶部有一个圆圈,沿着半径从中心开始有一条线.

有关如何删除上覆圆线的任何想法?

java libgdx

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

AssetManager - 使用哪一个

两个版本都可以使用,但我不确定使用哪个以及为什么要使用该版本?如果您已经卸载资产,是否需要处理TextureAtlas?

版本1:加载包文件(带位置数据的TexturePacker文件)和png.

gameSpriteSheet = new TextureAtlas(Gdx.files.internal(DATA_DIR_PATH + "GameSpritesPack.txt"));

assetManager.load(DATA_DIR_PATH + "GameSpritesPack.txt");
assetManager.load(DATA_DIR_PATH + "GameSpritesPack.png");

// Call only if assetmanager's update method returns true
headerRegion = getTexture("MainMenuHeader", gameSpriteSheet);
Run Code Online (Sandbox Code Playgroud)

要卸载:

if (assetManager.isLoaded(DATA_DIR_PATH + "GameSpritesPack.txt")) {
   assetManager.unload(DATA_DIR_PATH + "GameSpritesPack.txt");
}

if (assetManager.isLoaded(DATA_DIR_PATH + "GameSpritesPack.png")) {
   assetManager.unload(DATA_DIR_PATH + "GameSpritesPack.png");
}

if(gameSpriteSheet != null) {
   gameSpriteSheet.dispose();
}
Run Code Online (Sandbox Code Playgroud)

版本2:仅加载包文件(带位置数据的TexturePacker文件).

assetManager.load(DATA_DIR_PATH + "GameSpritesPack.txt");

// Call only if assetmanager's update method returns true
gameSpriteSheet = assetManager.get(DATA_DIR_PATH + "GameSpritesPack.txt", TextureAtlas.class);
headerRegion = getTexture("MainMenuHeader", gameSpriteSheet);
Run Code Online (Sandbox Code Playgroud)

要卸载:

if (assetManager.isLoaded(DATA_DIR_PATH + "GameSpritesPack.txt")) …
Run Code Online (Sandbox Code Playgroud)

java libgdx

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

Libgdx - 从Rectangle.overlap(Rectangle)获取交叉矩形

有没有办法知道libgdx中两个Rectangle之间的交叉矩形区域,如c#http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.rectangle.intersect.aspx中的Rectangle ?

我需要获得两个矩形之间的交集矩形区域,但libgdx中的重叠方法只返回两个矩形是否相交的布尔值.我已经阅读过Intersector类,但它没有提供任何帮助.

java eclipse android libgdx

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

TextureAtlas的优点以及如何正确使用它

我正在重构我在libgdx中开发的小RPG.

我有一个普遍的问题,如何正确使用纹理图集.我有100个精灵和大约10种精灵.目前我不使用地图册,但我想增加渲染性能,因为如果我的游戏循环,这是唯一需要花费很长时间的东西.(得到大约100个绑定和15个渲染调用...)

所以它看了一下gitTextureAtlasClass 链接,并想知道我是如何从它获得更多性能的.如果我用正确的纹理得到它的精灵,我会得到一个副本,所以我仍然会切换OpenGL绑定吗?所以这不是一个更好的解决方案,如果我有100个演员都拥有它自己的精灵,或者我错了它,我只是没有做到这一点?

Atlas本身确实建议不要getsprite多次调用,但我需要这样做,这样每个actor都拥有自己的sprite并拥有自己的状态.

也许你可以给我一个小例子如何在不切换OpenGL绑定的情况下使用来自一个地图集的多个精灵.这应该是使用地图集的原因,但我现在还没有得到它.

java opengl textures libgdx texture-atlas

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

Libgdx敌人移动

我有关于在马里奥兄弟游戏中像海龟一样移动敌人的问题.

我正在使用像libgdx中的马里奥兄弟游戏这样的平台游戏.我制造地面,玩家在地面上移动,游戏装饰等......但我不知道如何使敌人移动.

什么时候敌人应该开始移动(渲染)?在一段时间延迟或当玩家接近敌人(宽度为1-2个屏幕)时,一直......

android artificial-intelligence libgdx

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

Libgdx - 如何让对话淡出而不是整个舞台?

当我显示一个Dialog时

someDialog.show(someStage);
Run Code Online (Sandbox Code Playgroud)

该对话框显示默认的FadeIn操作.舞台也渐渐淡出.因此它使我的背景随着舞台逐渐消失.

我怎样才能防止这种情况发生?

编辑:这里是我的示例代码:

在屏幕显示方法中:

Texture bg = new Texture(Gdx.files.internal(src));
stage = new Stage(game.getViewport(), batch);
stage.addActor(someDialog) //just normal dialog
Run Code Online (Sandbox Code Playgroud)

渲染代码:

@Override
    public void render(float delta) {
        super.render(delta);
        getBatch().begin();
        getBatch().draw(backgroundTexture, 0, 0, width, height);
        getBatch().end();
        getStage().act(delta);
        getStage().draw();
        time += delta;
    }
Run Code Online (Sandbox Code Playgroud)

我在某个事件触发时显示对话框:

   dialog.show(getStage());
Run Code Online (Sandbox Code Playgroud)

我试图将null作为第二个参数放到show方法中

dialog.show(getStage(), null);
Run Code Online (Sandbox Code Playgroud)

并且使得舞台和对话框都不会淡入但是想要仅保留对话框的效果,或者至少不保留背景效果.

dialog stage fadein libgdx

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

如果我使用的是 Handheld.Vibrate() 是否必须添加 VIBRATE 权限

如果我使用的是 Handheld.Vibrate() 或者它是自动添加的,我是否必须添加 VIBRATE 权限?

如果我必须添加它,我该怎么做。如何编辑 AndroidManifest。这是在 Unity 中。

unity-game-engine

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

Libgdx GestureListener处理Hold TouchDown

我正在使用libgdx来开发mygame.

我正在使用GestureListener来处理我的触摸事件.我的目标是当玩家在屏幕上触摸时让角色向右或向左移动.

问题是,GestureListener没有任何方法来处理这个问题.如果我正在使用平移,则播放器必须滑动才能触发该方法.此外,GestureListener没有touchUp方法,所以我无法组合touchDown和touchUp.

有没有办法做到这一点?

java eclipse android libgdx

0
推荐指数
1
解决办法
1921
查看次数