Java 如何在LibGDX中处理与shaperender的冲突
我正在尝试用LibGDX为安卓系统制作一个小游戏,我在碰撞检测方面遇到了困难。 所以,我有两种形状: 第一个是矩形(播放器): 第二个是下面的笼子:Java 如何在LibGDX中处理与shaperender的冲突,java,android,libgdx,collision,shape-rendering,Java,Android,Libgdx,Collision,Shape Rendering,我正在尝试用LibGDX为安卓系统制作一个小游戏,我在碰撞检测方面遇到了困难。 所以,我有两种形状: 第一个是矩形(播放器): 第二个是下面的笼子: shapeRenderer.begin(ShapeRenderer.ShapeType.Filled); shapeRenderer.setColor(Color.BLACK); shapeRenderer.rect(0, 0, 50, Gdx.graphics.getHeight()); shapeRenderer.rect(0, 0, Gdx.
shapeRenderer.begin(ShapeRenderer.ShapeType.Filled);
shapeRenderer.setColor(Color.BLACK);
shapeRenderer.rect(0, 0, 50, Gdx.graphics.getHeight());
shapeRenderer.rect(0, 0, Gdx.graphics.getWidth(), 50);
shapeRenderer.rect(Gdx.graphics.getWidth()-50, 0, 50, Gdx.graphics.getHeight());
shapeRenderer.rect(0, Gdx.graphics.getHeight()-50, Gdx.graphics.getWidth(), 50);
shapeRenderer.end();
我的问题是:
如何检测这两个对象之间的碰撞?我知道,如何检测碰撞的唯一方法是使用Rectangle类中的intersect方法,但我希望生成比矩形更复杂的形状
谢谢你的帮助 根据文档
shaperender
效率不高,不应大量使用
渲染点、线、矩形、填充矩形和长方体。这
类不用于性能敏感的应用程序
但更倾向于调试
更好的方法可能是分配一个带有小白色纹理的精灵
,将其放大到合适的大小。使用方法设置色调和alpha
对于精灵的碰撞getBoundingRectangle()
,返回边界轴对齐的矩形,这将有助于防止碰撞
可以使用pixmap手动创建纹理
public static Texture createBgTexture() {
Pixmap pixmap = new Pixmap(1, 1, Format.RGBA8888);
pixmap.setColor(Color.WHITE);
pixmap.fill();
Texture texture = new Texture(pixmap); // must be manually disposed
pixmap.dispose();
return texture;
}
对于更复杂的形状使用,将以可读文件格式返回形状的顶点,请使用该点并创建
Libgdx具有Intersector
类,包含许多用于碰撞检测的静态方法,如intersectPolygons(..)
等
另一方面,如果您想要真实的碰撞检测,可以在游戏中使用box2d。在box2dapi内部有一个
ContactListener
接口,当两个物体碰撞时,它会告诉您 你所说的更复杂的形状只是由多个较小的矩形组成。你只想要那些,甚至像三角形和其他多边形的东西吗?不,我想我只想用小矩形来制作更大的形状。然后我应该从矩形类为我想要的每个小矩形创建一个矩形吗?好的,我离开ShaperEnder哈哈!非常感谢你的帮助我要试试你告诉我的!
public static Texture createBgTexture() {
Pixmap pixmap = new Pixmap(1, 1, Format.RGBA8888);
pixmap.setColor(Color.WHITE);
pixmap.fill();
Texture texture = new Texture(pixmap); // must be manually disposed
pixmap.dispose();
return texture;
}