使用ShaperEnder(libgdx)的辉光效果
我读到了有关使用精灵的辉光/粒子效应的文章,它们工作得很好 有没有一种简单的方法可以通过简单的变形器功能(如圆)来创建类似的模糊效果使用ShaperEnder(libgdx)的辉光效果,libgdx,blur,glow,Libgdx,Blur,Glow,我读到了有关使用精灵的辉光/粒子效应的文章,它们工作得很好 有没有一种简单的方法可以通过简单的变形器功能(如圆)来创建类似的模糊效果 @Override public void draw(Batch batch, float parentAlpha) { super.draw(batch, parentAlpha); batch.end(); shapeRenderer.begin(ShapeRenderer.ShapeType.Point); shapeRend
@Override
public void draw(Batch batch, float parentAlpha) {
super.draw(batch, parentAlpha);
batch.end();
shapeRenderer.begin(ShapeRenderer.ShapeType.Point);
shapeRenderer.setAutoShapeType(true);
drawCircle();
shapeRenderer.end();
batch.begin();
}
private void drawCircle() {
shapeRenderer.setColor(Color.WHITE);
shapeRenderer.set(ShapeRenderer.ShapeType.Filled);
// apply effect ??
shapeRenderer.circle(10,10,2);
}
您不能将纹理与默认Shapender一起使用 有几种方法可以做到这一点,但最简单的方法是使用ShapeDrawer库。它为SpriteBatch添加了一些“类似ShaperEnder”的功能等等。请参见是的,您可以创建“辉光”效果,这可以通过使用超过边界的递减alpha值进行绘制来实现 首先,要定义光晕效果参数,让我们确定发光对象的最大边界,即光晕结束的位置,即光晕大小的
auraSize
接下来,我们需要知道对象实体部分的大小,即不发光的位,我们将其称为对象大小的objSize
为了得出这个结论,我们可以使用一个简单的for
循环和一些if
语句:
private void drawCircle() {
shapeRenderer.set(ShapeRenderer.ShapeType.Filled);
//Draw circles upto the size of aura
for(int radius = 0; radius < auraSize; radius++) {
/*
* Checks if radius fits object size, sets colour to solid white if so
* Interpolates alpha value to 0 based on distance to aura covered by radius otherwise
*/
if(radius <= objSize) {
shapeRenderer.setColor(Color.WHITE);
} else {
shapeRenderer.setColor(new Color(1, 1, 1,
MathUtils.lerp(1, 0, (radius - objSize) / (auraSize / objSize))));
}
//Draws the circle at the current radius
shapeRenderer.circle(10, 10, radius);
}
}
private void drawCircle(){
shaperender.set(shaperender.ShapeType.Filled);
//画出光环大小的圆圈
用于(整数半径=0;半径<大小;半径++){
/*
*检查半径是否适合对象大小,如果适合,将颜色设置为纯白
*根据半径覆盖的光环距离,将alpha值插值为0
*/
if(radius)您想这样做以便使任意形状发光吗?预渲染的发光精灵将更有效,更容易获得发光圆。要使用任意形状渲染器形状,您可以绘制帧缓冲区并进行一些模糊后处理。这并不简单,但有一些库可以使其更容易。