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