Java LibGDX安卓在屏幕上生成随机位置

Java LibGDX安卓在屏幕上生成随机位置,java,android,random,libgdx,Java,Android,Random,Libgdx,我想使用LibGDX在我的android设备屏幕中生成随机位置。 我的精灵宽度是150,高度也是150,所以偏移量=150 我的想法是获得屏幕的宽度和高度,在执行width-150和height-150时生成一个随机数 像这样: int x = 150 + Config.RANDOM.nextInt( (int) (Gdx.graphics.getWidth() - Config.OFFSET) ); int y = 150 + Config.RANDOM.nextInt( (i

我想使用LibGDX在我的android设备屏幕中生成随机位置。 我的
精灵
宽度
是150,
高度
也是150,所以
偏移量=150

我的想法是获得屏幕的宽度和高度,在执行
width-150
height-150
时生成一个随机数

像这样:

    int x = 150 + Config.RANDOM.nextInt( (int) (Gdx.graphics.getWidth() - Config.OFFSET) );
    int y = 150 + Config.RANDOM.nextInt( (int) (Gdx.graphics.getHeight() - Config.OFFSET) );

测试了一下,但不幸的是,精灵有时会从屏幕上消失。 以下是调试输出:

03-05 15:50:22.432: I/System.out(4141): X: 828 Y:1384
03-05 15:50:23.432: I/System.out(4141): X: 391 Y:520
03-05 15:50:24.452: I/System.out(4141): X: 230 Y:917
03-05 15:50:25.462: I/System.out(4141): X: 872 Y:808
03-05 15:50:26.472: I/System.out(4141): X: 827 Y:963
03-05 15:50:27.482: I/System.out(4141): X: 595 Y:382
我的屏幕
width/height(Gdx.graphics.getWidth()/Gdx.graphics.getHeight):

我是否生成了错误的随机位置

另外,我使用的是肖像模式,我不使用
相机。组合
,因为它将我的
精灵旋转180度

    camera = new OrthographicCamera(w, h);
            camera.setToOrtho(true, w, h);
            camera.update();


    public void render() {
        this.spriteRenderer.setProjectionMatrix(this.instance.camera.combined);
        this.spriteRenderer.begin();
        if (!this.ballon.isPoping()) {
            Sprite s = this.ballon.getSprite();
            spriteRenderer.draw(s, 50, 50, s.getWidth(), s.getHeight());
        }
//      else {
//          if (!this.ballon.isPoped()) {
//              Sprite s = this.ballon.getCurrentAnimation();
//              this.spriteRenderer.draw(s, this.ballon.getX(),
//                      this.ballon.getY(),
//                      this.ballon.getSprite().getWidth() * SpriteConfiguration.BALLON_SCALE,
//                      this.ballon.getSprite().getHeight() * SpriteConfiguration.BALLON_SCALE);                
//              this.ballon.processAnimation();
//          }
//      }
        this.spriteRenderer.end();
    }

我相信精灵的位置设置为屏幕上精灵的左上角

您希望在之间生成值。但是,您的代码会在两个之间生成数字

使用此选项生成值

或者如果你想要射程

我发现,如果我的随机生成器能够正常工作,那么我就可以更容易地在边缘案例中寻找答案。只要试着先设置尽可能低的x,y,然后再设置最大值,如果它们起作用的话就试试看。在那之后,用random替换它。。即:

int x = 0;
int y = 0;
然后试试看

int x = Gdx.graphics.getWidth() - Config.OFFSET;
int y = Gdx.graphics.getHeight() - Config.OFFSET;

确认边缘情况正确后,只需将其替换为我前面提到的两种情况中的一种。

您有什么问题?精灵有时会从屏幕上消失。抱歉,我之前的回答无法解决您的问题。当您调用
setToOrtho
时,orthocam默认在角上有0,0。您可能需要显示如何生成精灵以及如何绘制精灵的代码。如果使用
cam,则会出现不正确的情况。组合的
会导致旋转精灵。您的调试证明您正确生成了数字,因此问题在于如何使用相机或放置精灵。添加组合后效果很好,但现在我的精灵像垂直变换的一样,顶部向下看,基本上旋转180度,我添加了我的绘图
int x = Config.OFFSET + Config.RANDOM.nextInt( (int) (Gdx.graphics.getWidth() - Config.OFFSET * 2) );
int y = Config.OFFSET + Config.RANDOM.nextInt( (int) (Gdx.graphics.getHeight() - Config.OFFSET * 2) );
int x = 0;
int y = 0;
int x = Gdx.graphics.getWidth() - Config.OFFSET;
int y = Gdx.graphics.getHeight() - Config.OFFSET;