首先关于贴花,贴花就像精灵,但在 3d 坐标中,像这样使用它:
私人贴花贴花;私人贴花贴花贴花批次;
在 show() 或 create()
decalBatch = new DecalBatch();
CameraGroupStrategy cameraGroupStrategy = new CameraGroupStrategy(camera);
decal = Decal.newDecal(textureRegion, true);
decal.setPosition(5, 8, 1);
decal.setScale(0.02f);
decalBatch.setGroupStrategy(cameraGroupStrategy);
在渲染()
//Add all your decals then flush()
decalBatch.add(decal);
decalBatch.flush();
也用 decalBatch.dispose() 处理;
请注意,将来贴花将成为 3d 的一部分,我个人不鼓励您使用贴花作为我自己使用 3d 平面,我发现它存在一些问题,要像这样使用 3d 平面,我将一些代码粘贴在这里
private Model createPlaneModel(final float width, final float height, final Material material,
final float u1, final float v1, final float u2, final float v2) {
modelBuilder.begin();
MeshPartBuilder bPartBuilder = modelBuilder.part("rect",
GL10.GL_TRIANGLES, Usage.Position | Usage.Normal | Usage.TextureCoordinates,
material);
//NOTE ON TEXTURE REGION, MAY FILL OTHER REGIONS, USE GET region.getU() and so on
bPartBuilder.setUVRange(u1, v1, u2, v2);
bPartBuilder.rect(
-(width*0.5f), -(height*0.5f), 0,
(width*0.5f), -(height*0.5f), 0,
(width*0.5f), (height*0.5f), 0,
-(width*0.5f), (height*0.5f), 0,
0, 0, -1);
return (modelBuilder.end());
}
纹理可以作为属性添加到材质
material.set(new TextureAttribute(TextureAttribute.Diffuse, texture)
对于具有 alpha 的透明平面添加到其他属性
attributes.add( new BlendingAttribute(color.getFloat(3)));
attributes.add( new FloatAttribute(FloatAttribute.AlphaTest, 0.5f));
material.set(attributes);
初始化 ModelInstance 以获取返回的模型
modelInstance = new ModelInstance(createPlaneModel(...))
使用 ModelBatch 对象在 render() 中渲染
modelBatch.render(modelInstance );
也看到这些链接。
http://www.badlogicgames.com/forum/viewtopic.php?f=11&t=11884
这是我在平面与贴花上的基准
http://www.badlogicgames.com/forum/viewtopic.php?f=11&t=12493