【问题标题】:Rotate sprite on sprite pixel level, not screen pixel level, in LibGDX在 LibGDX 中,在精灵像素级别上旋转精灵,而不是屏幕像素级别
【发布时间】:2014-10-11 16:42:17
【问题描述】:

我正在制作一个像素化游戏,我正在尝试旋转一个精灵。但是,我没有达到我想要的那种旋转效果。

目前,我的精灵在旋转时看起来像这样:

如您所见,它的旋转相对平稳。您可以看到“大像素”平滑地旋转。但是,这不是我正在寻找的旋转效果。相反,这就是我希望它旋转的方式:

但是,最好以一种不会使像素失真太多的方式。你可以看到区别。我希望旋转实际的“大像素”,而不是“屏幕像素”。

我认为问题可能在于我如何缩放像素以使其变大。我正在做的是,我正在放大相机,将它移近一些。相反,我想做的是像平常一样渲染,然后放大屏幕像素。这样我会自动实现我想要的旋转效果。不过,我不知道该怎么做。

这就是我目前“放大像素”的方式:

camera = new OrthographicCamera();
camera.setToOrtho(false, 1280 / 4, 720 / 4);

游戏的分辨率是 1280x720,所以我放大像素的方法是放大 4 倍。 然而,我想做的是像平常一样渲染,然后将屏幕拉伸 4 倍。

任何关于我如何做到这一点的帮助将不胜感激。

【问题讨论】:

    标签: java rotation libgdx scale pixel


    【解决方案1】:

    看看this post。这是针对您的问题的一种解决方案。只需先渲染到具有最近邻插值的小帧缓冲区,然后再渲染到屏幕。也许这不是有效的方法,但绝对是实现这种行为的方法。

    祝你好运!

    【讨论】:

    • 我知道已经有好几年了,但我正在为我的游戏寻找这个。链接失效了,有没有关于这个话题的帖子?
    • 作为替代方案,还有 rotsprite 算法,但它必须是 CPU 密集型渲染,因此无法用于实时渲染多个对象。
    • Quick Google 没有让我看到任何类似的帖子,但想法很简单——您需要将图像渲染到与像素化图像本身具有相同像素密度的“画布”上。然后,如果您在绘制时旋转它,它将保留原始分辨率。这个概念本身在网络上有很好的描述,快速浏览这篇文章link.medium.com/f8zfziQxUjb。但是最难的部分是使用中间帧缓冲区来实现它,如果你是第一次这样做,这有点棘手。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-19
    • 1970-01-01
    • 2014-04-04
    相关资源
    最近更新 更多