我目前正在使用Java在Eclipse和带有Box2D的libGDX中编写一个小型2D游戏。 出于调试的原因,我想渲染一个在调试过程中可见的坐标系,而我不知道如何实现。 应该在显示libGDX坐标(像素)的libGDX中生成系统。也可以将其实现为显示box2D坐标(Pixels / PixelsPerMeter)的box2D对象。
我可以使用任何内置功能吗?
我应该提到,我的地图不是经典的侧滑车。该游戏或多或少是一个空间模拟,玩家在附近的行星(圆圈)吸引的蜜蜂周围移动。播放器可以在所有方向上自由移动,并且摄像机可以跟随他,从而将播放器保持在屏幕的正中间。旋转时,照相机也会与机身一起旋转。 所有旋转都是为什么我想要一个坐标系统来向我显示原始X方向和Y方向的原因。
感谢您的帮助,我也对手动实现坐标系的解决方案感兴趣,libGDX / Box2D没有提供任何帮助。
更新: 好像我有点不清楚。我确实知道如何获取元素的坐标,我只是想在运行游戏时以某种方式直观地看到坐标系。 我创建了这个可怜的sketch,希望可以弄清楚:)
答案 0 :(得分:0)
据我所知,降低需求者的关键点是您不需要新的坐标系,但是您需要知道与相机位置无关的原始坐标,因为相机可以移动。您对问题的措辞令人困惑。
我要做的一种简单方法是检测何时按下了actor,然后system.out.print()坐标。这是处理小物件的快速而肮脏的把戏。当然,要简单起见,这意味着您需要一种容易检测演员压力的方法,该解决方案仅假设您已经为此安装了某种系统。
如果目的是调试特定问题,则应考虑在IDE中使用断点。抓住一个InputProcessor实例并检测到一些按键,然后放置一个断点。现在,在调试运行时中,您可以随时按调试键以冻结程序并检查当前状态。然后,您可以转到您的实体并使用“表达式”窗口或将鼠标悬停在变量(如果属于同一类)上来轮询其x / y坐标。
业内一种通用的专业调试方式(例如Skyrim)结合了第一种方法,即单击角色以产生实体ID,然后能够通过游戏机中的轮询和操纵实体。因此,一种实现方法是,在控制台打开时单击一个actor,将其哈希码打印到控制台,然后可以使像getPosition([hashcode])这样的方法将带有匹配的哈希码的实体位置打印出来。 StrongJoshua https://github.com/Draika/libgdx-inGameConsole
在此处提供了一个用于游戏机控制台的libGDX库。