当帧的边界框发生变化时,如何避免精灵失真?

时间:2013-12-06 06:24:47

标签: libgdx sprite bounding-box distortion

我有一个spritesheet(由美妙的TexturePacker打包),看起来像这样:

enter image description here

并且动画作为动画使用the current code效果很好。 然而,当动画移动到边界框较小的框架时(例如,当腿靠近时,当跪下等时),图像变形,使得较小的边界框填充精灵的边界框。

我该如何解决这个问题?

上面的spritesheet是从Adobe Flash动画示例中提取帧。

2 个答案:

答案 0 :(得分:3)

更简单的方法: 您可以使所有纹理区域的大小相同。

很难: 保持这样,但你需要保存并计算每个要绘制的纹理区域的大小和位置。

我个人建议您使用第一个选项,只需使所有图像大小相同。

答案 1 :(得分:0)

无法给你一个链接,但这就是我为这些情况所做的事情

  1. 同时使纹理打包器剥离空白区域
  2. 为图片制作AtlasSprite数组
  3. 然后在我的render方法

    public void render(float delta) {
         atlasSprite = animation.getKeyFrame(statetime, Animation.LOOPING);
         atlasSprite.draw(batcher)
    };
    
  4. 在我的update方法中,它给出了显示的当前图像的精确矩形边界。由于您已经剥离了空格并使用了AtlasSprite,因此边界将没有空白空格。

    public void update(float delta) {
        bounds = sprite.getBoundingRectangle();
    }
    
  5. P.S。这只是一个伪代码,许多语法错误可能只是为了给你一个想法