繁体   English   中英

libgdx中的边界冲突期间消失的精灵

[英]Disappearing a sprite during boundary collision in libgdx

我有一个矩形组,可容纳一堆精灵。 精灵正在移动(例如向上移动)。 当它们到达顶部时,它们与边界碰撞。 我设置了逻辑,可以在精灵退出组时杀死它们。 但是,按照现在的方式,我可以看到精灵离开了小组。 我要制作它,以便当精灵越过边界时,它逐渐消失,直到消失(消失)。

这是我想要实现的粗略模型。

碰撞

我当时正在玩相机,以为我必须修改视口,但是它不起作用。 实现此效果的正确方法是什么?

谢谢!

编辑:我的相机是这样设置的:

    camera = new OrthographicCamera(width, height);
    camera.setToOrtho(false, width, height);
    camera.position.set(width/2, height/2, 0);

现在,它是从组的父级(层)运行的。 宽度和高度为Gdx.graphics.getWidth()等。我的update():

    camera.position.x = (width / 2) - resolver.getxPixelOffset()*parallax;
    camera.update();
    batch.setProjectionMatrix(camera.combined);
    batch.begin();
    g.drawGroup(batch);
    batch.end();

我将相机控件移到了班上。 然后,我将宽度和高度更改为groupWidth和groupHeight。 由于该组不是整个屏幕,因此我认为它必须较小。 这使整个团队变得庞大。 我不想更改群组的大小(或缩放?):(

我自己还没有测试过,但是我相信正确的方法是使用剪刀 基本上,剪刀允许您从图片中裁剪出一个区域,并且只允许绘制该区域中的内容,因此您可能会执行类似于此处演示中的操作:

Rectangle scissors = new Rectangle();
Rectangle clipBounds = new Rectangle(x,y,w,h);
ScissorStack.calculateScissors(camera, spriteBatch.getTransformMatrix(), clipBounds, scissors);
ScissorStack.pushScissors(scissors);
spriteBatch.draw(...);
spriteBatch.flush();
ScissorStack.popScissors();

在使用剪刀绘制之前,可能需要绘制并冲洗背景图像(如果有的话)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM