Java 如何在libgdx(风险游戏)中定义可高亮显示、可单击的自定义对象
我正在制作一个类似于风险的游戏,并努力寻找一种方法来实现与各国的互动 其基本思想是创建非矩形的自定义对象,并能够通过单击它们、使用鼠标悬停突出显示它们或随着游戏的进行而改变它们的颜色 我将如何选择有能力的国家?精灵的问题是它们的边界框是矩形的,如果我定义Box2D顶点并使多边形变得非常混乱。此外,还有很多国家,所以很多平台式解决方案都不适合Java 如何在libgdx(风险游戏)中定义可高亮显示、可单击的自定义对象,java,libgdx,Java,Libgdx,我正在制作一个类似于风险的游戏,并努力寻找一种方法来实现与各国的互动 其基本思想是创建非矩形的自定义对象,并能够通过单击它们、使用鼠标悬停突出显示它们或随着游戏的进行而改变它们的颜色 我将如何选择有能力的国家?精灵的问题是它们的边界框是矩形的,如果我定义Box2D顶点并使多边形变得非常混乱。此外,还有很多国家,所以很多平台式解决方案都不适合 我应该如何更改所选内容的颜色?最好是每个国家都有一个单独的精灵,并在它们之间不断切换,还是有更好的方法?一种方法是像你尝试过的那样使用多边形,但我想知道为什
我应该如何更改所选内容的颜色?最好是每个国家都有一个单独的精灵,并在它们之间不断切换,还是有更好的方法?一种方法是像你尝试过的那样使用多边形,但我想知道为什么和你的意思是它变得混乱。有一些工具可以让你在图像上画顶点,然后导出。你可能需要清理一下数据并将其导入到你的应用程序中。自己制作这样一个应用也不是很难,让它导入你的图像,开始绘图并导出到你喜欢的格式。你画的多边形越详细,你得到的细节就越多 也许更简单的解决办法是使用一个国家的每张图像的不透明性。每个国家都有它自己的图像,你需要重叠边界矩形来排列它们。当鼠标悬停在一个或多个边界框上时,检查鼠标是否位于透明像素上。如果它是透明的,你显然不是在实际的国家上空盘旋。需要考虑的一些事项:
- 我将以像素完美的方式创建游戏,以便将图像的每个像素转换为屏幕上的单个像素,并输出到屏幕上李>
- 要对齐整个地图,我将在绘图应用程序中创建一个大世界地图。然后保存每个国家,但保留完整地图的画布大小。使用LibGDX
打包这些图像时,删除空白(透明像素),您将在图集中获得偏移。您可以对每个国家使用此偏移来对齐它们,并通过删除所有空白来节省宝贵的纹理空间TexturePacker
- 在深入潜水之前,一定要先检查是否有简单的碰撞
- 如果您想拥有“悬停”功能,那么不要每次更新都执行
,因为它相当昂贵。您最好在初始化country对象时创建自己的二维布尔数组,该数组表示可单击区域pixmap=texture.getTextureData().consumerpixmap()
按钮
或图像按钮
扩展“超过”、“按下”和“注册点击的侦听器”功能。否则,只需创建两个状态(如您提到的)听起来不错。如果我将国家作为图像按钮来实现,是否可以将physicseditor中的多边形作为其边界框来检测单击?nvm我已经找到了如何创建一些精确的Box2D实体,使其位于纹理之下,它现在主要是切换纹理