好的,我正在尝试提供帮助。我目前与普通人一起工作,OrthogonalTiledMapRenderer
我相信您可以在 Render 课程中获得一些好成绩。例如,您如何检查图块是否可见。只需看一下 libgdx 的存储库。
首先。永远不会以dispose
任何方式调用。如果您真的不再需要您的屏幕,您可以自己调用它。如果您使用它,您就可以在其中处置您的资产。
那么如何获得点击检测。您可以将 Listener 添加到每个 Actor,例如:
actor.addListener(new InputListener() {
public boolean touchDown (InputEvent event, float x, float y, int pointer, int button) {
System.out.println("down");
return true;
}
public void touchUp (InputEvent event, float x, float y, int pointer, int button) {
System.out.println("up");
}
})
您可以像这样添加更多侦听器。例如ActorGestureListener()
检测夹点等。
确保您使用cam.unproject
正确的,以便正确触发触摸事件。
资源:libgdx/wiki/scene2d#Inputlistener
您当前hit
的方法还有其他功能:
命中检测 Actor hit 方法接收一个点并返回该点最深的actor,如果没有命中actor,则返回null。这是默认的命中方法:
public Actor hit (float x, float y, boolean touchable) {
if (touchable && getTouchable() != Touchable.enabled) return null;
return x >= 0 && x < width && y >= 0 && y < height ? this : null; }
坐标在演员的坐标系中给出。如果该点在演员的边界内,这只是返回演员。可以使用更复杂的检查,例如,如果演员是圆形的。touchable 布尔参数指示是否应该尊重演员的可触摸性。这可以实现命中检测,而不是触摸不可触摸的演员。
当在舞台上调用 hit 时,在舞台的根组上调用 hit,这反过来又在每个子节点上调用 hit。找到的第一个非空角色作为包含给定点的层次结构中最深的角色返回。
命中检测
您不需要覆盖它。Actors
如果我做对了,它是一个舞台。
那么如何让它滚动呢?您需要检测幻灯片事件(如上所示)。如果发生此类事件,您需要移动您的相机或移动您的舞台/瓷砖地图(即使检测到幻灯片也可能通过移动的值)。两者具有相同的效果。例如,在捏合时,您可以通过捏合值更改相机的缩放比例。
我确实在每个渲染周期中移动我的相机,所以总是以我的角色为中心:
this.gameCam.position.x = this.character.getX()
+ this.character.sprite.getWidth() / 2;
this.gameCam.position.y = this.character.getY()
+ this.character.sprite.getHeight() / 2;
还要仔细看看这个存储库!这是一个游戏中的工作 Hexmap:
Hexmap
引用了这个游戏:
Mathematics并在Libgdx Post
中找到
我希望这会有所帮助!也许从一个常规的 Tilemap System 开始,然后再从六边形开始。好像难度有点大。但是有很多教程解释了理论以及如何开始创建这样的系统。即使对于 libgdx。
一般来说,我会说你应该等待那个项目,直到他们给我们 Hextile API。他们正在努力,但我相信这确实需要一些时间。
问候