【问题标题】:Create Menu Button with a Sprite使用 Sprite 创建菜单按钮
【发布时间】:2016-09-09 22:48:40
【问题描述】:

我目前正在为我的游戏在菜单屏幕上编程。我试图创建一个 Rectangle 来检查 Sprite Button 是否被触摸。我使用任意世界坐标public static int WIDTH = 1080 , HEIGHT = 720;

    public void create() {

    cam = new OrthoCamera();
    cam.resize();

    texture = new Texture("Button.png");

    texture.setFilter(TextureFilter.Linear, TextureFilter.Linear);
    TextureRegion region = new TextureRegion(texture, 59, 52, 300,250);

    sprite = new Sprite(region);
    sprite.setSize(sprite.getWidth()  , sprite.getHeight()  )
    sprite.setPosition(MyGdxGame.WIDTH / 2, MyGdxGame.HEIGHT / 2);

}

我正在使用一个特殊的正交相机,如果你想查看这两个相关的类,请点击here。 (不是我的项目)

    public void update(OrthoCamera cam) {

    if(Gdx.input.isTouched())
     {

       Vector3 tmp = new Vector3( Gdx.input.getX(), Gdx.input.getY(), 0);
       cam.unproject(tmp);

       Rectangle textureBounds = new Rectangle(0,0, 300, 250); //origin at center ?!



      if(textureBounds.contains(tmp.x,tmp.y))
          {

          //ScreenManager.setScreen(new GameScreen());
            System.out.println("Rectangle")          
          } 
     }

     }   

通过测试,我认识到不知何故矩形坐标系的原点位于中心,并且宽度和高度设置得很高。在这里,您可以看到我通过单击打印出“矩形”的区域的图片。通常矩形的原点应该在左下角,对吧?

【问题讨论】:

  • OrthoCamera 类是可憎的。 :) 它具有从超类复制的参数,并在一些不必要的重写方法中将这些参数与超类的参数混合和匹配。 VirtualViewport 类看起来也很复杂。您的问题可能与未仔细实现超类方法的重写类有关。 VirtualViewport 类也很复杂。您应该使用内置的 Libgdx ExtendViewport 类,使用普通的 OrthographicCamera。

标签: java android libgdx orthographic


【解决方案1】:

我强烈建议您使用例如Scene2d。它可以轻松为您的应用创建用户界面。

您可以使用ImageButton 并为其附加ClickListener,以便在单击按钮时获得回调。

【讨论】:

  • -谢谢- 我会考虑一下,但它不会解决我的坐标问题。
【解决方案2】:

要解决坐标系不居中的问题,你必须将相机设置到正确的位置。

您可以使用以下代码来做到这一点:

camera.setOrtho(false);
camera.position.set(Gdx.graphics.getWidth()/2, Gdx.graphics.getHeight()/2);
camera.update();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-02
    • 1970-01-01
    • 2011-03-05
    相关资源
    最近更新 更多