我目前正在致力于一个游戏,在其中,我需要像素完美地与物体碰撞。然而,我遇到的唯一障碍是得到物体的面具。我想过将一个对象的sprite (适当地缩放和转换)呈现为FrameBuffer,然后我会转换成一个像素映射,但是我没有运气(尝试了许多方法,包括这)。
所以,我的问题是:在LibGDX中是否有一种方法可以将单个精灵呈现为像素映射?
发布于 2015-12-08 21:21:58
听起来像是把马放在马车后面。雪碧是纹理的一个区域,而纹理又是从文件(又名Pixmap )加载的图像。如果您只想从文件中加载图像,那么可以这样做:new Pixmap(Gdx.files.internal("yourfile.png"));。您还可以缩放和转换您的坐标,而无需首先呈现给FBO。
这就是说,获得FrameBuffer的Pixmap和截图一样“简单”,而FBO是绑定的,因为它就是这样的。
fbo.begin();
Gdx.gl.glClear(...);
... //render to the FBO
Pixmap pixmap = ScreenUtils.getFrameBufferPixmap(0, 0, fbo.getWidth(), fbo.getHeight());
fbo.end();请注意,这将是看上去是朝下的。
但是您可能只对像素数据感兴趣,所以最好跳过Pixmap步骤,在这种情况下使用ScreenUtils.getFrameBufferPixels方法。
不过是,也就是说,使用像素数据检测冲突很可能不是您想要达到的最佳解决方案。相反,我建议考虑其他选项,例如,查看这个工具,它可以用来将图像转换为碰撞形状。
https://stackoverflow.com/questions/34164782
复制相似问题