当前位置: 首页 > 知识库问答 >
问题:

输入未抓取正确坐标libgdx java

龙永福
2023-03-14

我正在做一个采矿游戏,如果你点击某个地方,你会删除那里的方块。现在所有的块都是正方形,只有当我的2d布尔数组中的点为真时才绘制。所以我试着把这个位置设置为false,只要你点击这里,就是我的输入处理器的触地方法

    private Vector2 tmp = new Vector2();
@Override
public boolean touchDown(int screenX, int screenY, int pointer, int button) {
    tmp.x = screenX / MapGrid.CELL_SIZE;
    tmp.y = screenY / MapGrid.CELL_SIZE;
    cam.unproject(new Vector3(tmp.x, tmp.y, 0));
    grid.manipulateGrid((int)(tmp.x), (int)(tmp.y), false);
    System.out.println("Clicked at: (" + tmp.x + ", " + tmp.y +")");
    return false;
}

我也在将相机转换为我的玩家位置。grid.manipulate网格接受一个x和一个y并将其设置为false。我的玩家位于网格坐标中的(10,126),当我点击他旁边时,它显示我正在点击(35,24)。我不确定我这样做是否正确,但我真的到处寻找,找不到解决方案。我发现了类似的问题,但没有结果。如果有人能告诉我如何将点击调整到玩家的坐标,我会非常感激。

共有2个答案

劳亦
2023-03-14

绘制的坐标与输入的坐标不同。LibGDX中输入的坐标从左上角开始为(0,0),而整个世界的坐标从左下角开始。所以你需要这样做:

@Override
public boolean touchDown(int screenX, int screenY, int pointer, int button) {
    tmp.x = screenX / MapGrid.CELL_SIZE;
    tmp.y = (Gdx.graphics.getHeight() - screenY)/ MapGrid.CELL_SIZE;
    cam.unproject(new Vector3(tmp.x, tmp.y, 0));
    grid.manipulateGrid((int)(tmp.x), (int)(tmp.y), false);
    System.out.println("Clicked at: (" + tmp.x + ", " + tmp.y +")");
    return false;
}

有关更多信息,请阅读:https://gamedev.stackexchange.com/questions/103145/libgdx-input-y-axis-flipped

岳鸿畴
2023-03-14

在取消投影后,必须对mapgrid进行分割

    @Override
public boolean touchDragged(int screenX, int screenY, int pointer) {
    tmp.x = screenX;
    tmp.y = (Gdx.graphics.getHeight() - screenY);
    tmp.z = 0;
    cam.unproject(tmp);
    grid.manipulateGrid((int)(tmp.x) / MapGrid.CELL_SIZE, (int)(tmp.y) / MapGrid.CELL_SIZE, false);
    System.out.println("Clicked at: (" + tmp.x / MapGrid.CELL_SIZE + ", " + tmp.y / MapGrid.CELL_SIZE +")");
    return false;
}
 类似资料:
  • 所以我坐在这里,拿着一部800像素的手机..并且< code > gdx . graphics . getwidth()也应该返回800.. 但是当我从获得坐标时,当我一直向左触摸屏幕时,我得到的最高数字是780左右。和右侧约20。 所以我的坐标都错了,所以我所有的按钮和东西都不能正常工作,等等。 知道发生了什么吗?

  • 我是PHP库phpQuery内容解析器的忠实粉丝(因为它很像jQuery,同时使用PHP DOMDocument提取标记),但我注意到快速关闭事件 和< code>phpQuery中。 我编写了一个简单的类PhpContentDocument来转储一个简单的html文档。 结果如你所料... 但是当使用saveHTML调用文档时 它返回... 我遇到的主要问题是,当我在元素上使用简单XML元素时(

  • 我目前正在为一个即将开始的项目制作自己的关卡创建器(地图)。一切都很好,除了我在添加放大和缩小选项时遇到了一个问题。我有一个处理所有输入和渲染的类,因为我才刚刚开始。 如您所见,此类扩展了InputAdapter并实现了Application ationListener。 照相机是正字法照相机。cameraHelper是我做的一个助手类。我把摄像机的位置设在这里。cameraHelper.setP

  • 我尝试使用getch()和kbsit()读取用户的输入,但它似乎无法识别按键被按下。 此代码打印“开始”,按下键时不打印任何内容。使用getch()读取和打印哪怕一个字符,而不使用循环,我都不走运。

  • 问题内容: JFreeChart中是否有一种方法可以从ChartMouseEvent中确定鼠标悬停在绘图空间中的x,y坐标?我尝试使用域十字线值,但这似乎不准确并且滞后于实际的鼠标事件。 谢谢, 杰夫 问题答案: 鼠标坐标相对于ChartPanel,因此您需要对其进行转换:

  • 作为一项自我分配的练习,我正在尝试编写一个简单的程序,该程序以生日为准,并确定给定日期所在的一周中的哪一天。计划的第一部分决定了年份。我使用扫描仪收集用户输入,然后使用do while循环测试输入是否可用(必须是数字,必须有四位数字),如果输入不符合标准,则重复该循环。我试图进入1998年,这显然是一个数字和四位数,它重复循环,好像我的输入是无效的。我假设do while循环中的某个地方有问题,但