我在使用纹理时遇到问题,并且在我正在研究的小型原型中使用照明。我了解如何使用 RayHandlers 和诸如此类的东西来实现照明,但是当我在 Body 顶部放置纹理时,纹理始终是恒定的可见性(例如不受光的影响)。目前,我刚刚尝试使用 Spritebatch,因为您通常会将纹理渲染到对象。使用照明时是否有其他方法可以做到这一点?
谢谢,刘易斯。
如果您希望您的纹理受到光照的影响,您必须先绘制纹理,然后再渲染灯光,如下所示:
public void render(SpriteBatch batch) {
super.render(batch);
Sprite sprite = (Sprite) body.getUserData();
sprite.setPosition(body.getPosition().x, body.getPosition().y);
sprite.setOrigin(texture.getWidth()/2, texture.getHeight()/2);
sprite.setRotation(body.getAngle() * MathUtils.radiansToDegrees);
sprite.draw(batch);
rayHandler.setCombinedMatrix(getCamera().combined);
rayHandler.updateAndRender();
}
如果您向我们展示代码会更好。在没有看到您的代码的情况下,我只能说您必须首先在对象上绘制纹理并使用 rayhandler 渲染灯光。