【问题标题】:Disappearing a sprite during boundary collision in libgdx在 libgdx 中的边界碰撞期间消失的精灵
【发布时间】:2014-07-04 05:17:36
【问题描述】:

我有一个包含一堆精灵的矩形组。精灵正在移动(说出来)。当它们到达顶部时,它们会与边界相撞。我已经设置了在精灵退出组时杀死精灵的逻辑。但是,现在的样子,我可以看到精灵离开了组。我想让它在精灵越过边界时逐渐消失,直到它消失(和死亡)。

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

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

谢谢!

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

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

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

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

我将相机控件移至我的小组课程。然后我将宽度和高度更改为 groupWidth 和 groupHeight。由于该组不是整个屏幕,我认为它必须更小。这使得这个群体变得庞大。我不想更改组的大小(或缩放?):(

【问题讨论】:

  • 实际上,设置相机视口应该可以解决问题。你能告诉我们你做了什么吗?
  • 我展示了一些代码:)

标签: java libgdx sprite


【解决方案1】:

我自己没有对此进行过测试,但我相信正确的做法是使用scissors。基本上,剪刀允许您从图片中剪出一个区域,并且只允许绘制该区域中的东西,因此您可能会做类似于他们在演示 here 中所做的事情:

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();

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

【讨论】:

  • 有趣!一个问题:它说“一堆矩形对象,用于通过 GL20.glScissor(int, int, int, int) 进行剪辑”。我的配置是 GL10。会兼容吗?
  • @VeryAttractiveS 不知道,您可能想自己尝试一下。但是,由于 GL20 是 default version now,如果可能,您可能需要考虑升级您的 libgdx 版本。
猜你喜欢
  • 2017-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多