Libgdx 如何使瓷砖在悬停时变得更亮?

Libgdx 如何使瓷砖在悬停时变得更亮?,libgdx,tiled,Libgdx,Tiled,我使用libGDX中的hexagonaltiledmaprederer和tiled程序创建了一个六边形等距平铺贴图。地图的渲染是正确的,但我不知道如何访问有关各个分幅的信息,因此我不知道如何处理用户输入 我想要的是在鼠标悬停在地砖上时使其发光(同时,可以打印有关地砖的某些内容,如它是什么地砖,即森林、河流、山脉),因此我想我需要某种类似网格的系统,我想这将由平铺地图提供给我,但我找不到/无法理解它 一些代码 主要核心类 public class MyGdxGame extends Game {

我使用libGDX中的hexagonaltiledmaprederer和tiled程序创建了一个六边形等距平铺贴图。地图的渲染是正确的,但我不知道如何访问有关各个分幅的信息,因此我不知道如何处理用户输入

我想要的是在鼠标悬停在地砖上时使其发光(同时,可以打印有关地砖的某些内容,如它是什么地砖,即森林、河流、山脉),因此我想我需要某种类似网格的系统,我想这将由平铺地图提供给我,但我找不到/无法理解它

一些代码
主要核心类

public class MyGdxGame extends Game {

 @Override
 public void create () {
    setScreen(new Play());
 }
}
游戏课

public class Play implements Screen {

 private TiledMap map, hexMap;
 private HexagonalTiledMapRenderer hexRenderer;
 private OrthographicCamera camera;

 @Override
 public void show() {
    hexMap = new TmxMapLoader().load("hexTiledMap.tmx");
    System.out.println(hexMap.getProperties().getKeys());
    hexRenderer = new HexagonalTiledMapRenderer(hexMap);

    camera = new OrthographicCamera();
    camera.setToOrtho(false);
 }

 @Override
 public void render(float delta) {
    Gdx.gl.glClearColor(0, 0, 0, 1);
    Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
    hexRenderer.setView(camera);
    hexRenderer.render();
 }

 @Override
 public void resize(int width, int height) {
    camera.viewportWidth = width;
    camera.viewportHeight = height;
    camera.update();
 }
}

我想用它做什么的例子


我希望能够,例如,使一个瓷砖更亮,或更红,或使它消失。因此,我基本上想让互动瓷砖。例如,我想让程序知道光标下是什么瓷砖。这些都只是例子,我希望你能理解我想要什么。

这是一个由三部分组成的问题

选择磁贴

你有你的鼠标位置,你的相机位置和瓷砖的大小。 如果根据相机位置平移鼠标位置,则会得到地图的鼠标坐标。 然后取这些坐标,用波浪线来划分。将x和y值强制转换为整数,鼠标悬停在平铺上

使瓷砖变亮

一种简单的方法是使用半透明的平铺/精灵,并将其显示在鼠标悬停的平铺上方

获取互动程序的属性:

TiledMap map;
TiledMapTileLayer tileLayer;

//define the layer where you select the tile
tileLayer = (TiledMapTileLayer) map.getLayers().get("layername");

//get the tile that you want
Cell cell = tileLayer.getCell(x,y);
TiledMapTile tile = cell.getTile();

//this is where you get the properties of the tile
tile.getProperties().get("propertiename");
在平铺中定义属性的方法是,在平铺集中选择一个平铺(或多个平铺),单击鼠标右键并选择“平铺属性”。在“属性”窗口的左下角,您会看到一个加号。单击此按钮,您可以添加自定义属性(为其指定名称和类型)。在平铺集中设置的属性将传递到放置在平铺贴图中的每个平铺

例如:如果要定义瓷砖的类型(树、沙、水等),请选择瓷砖并添加一个名为“TileType”的属性作为字符串。按“确定”时,可以为类型指定一个值。例如“沙子”

然后,当您需要选定磁贴的类型时,可以读取属性:

String tileType = tile.getProperties().get("TileType");
通过这种方式,可以在平铺上设置多个属性


如果试图从没有平铺的x,y位置的平铺映射中获取单元格,tileLayer.getCell(x,y)将返回null。所以记得检查一下。

你说的“点亮”是什么意思?你想用某种覆盖物吗?可以通过获取tiles属性来找到tile的数据。例如,我希望能够使一个tile更亮,或更红,或使其消失。因此,我基本上想让互动瓷砖。例如,我想让程序知道光标下是什么瓷砖。这些都只是例子,我希望你明白我想要什么,我明白你的意思。这将是一个较长的解释,但没有任何进展。我现在正在工作,但今晚我可以给你举个例子。这可能会帮助你谢谢@resw67