在libGDX中移动播放器时,连接到播放器的BroadSword会向前跳2个像素

问题描述

这是交易。我有一个在平铺的游戏地图中有一把大刀的玩家。阔剑附在玩家的位置上,当按下鼠标左键时,它将围绕玩家旋转以模拟“挥杆”。但是,当我在用阔剑攻击时移动玩家时,以5x5的蓝色圆点表示的阔剑会向前跳跃2个像素,这是im前进的方向。

我在播放器上遇到了这个问题,但是使用batch.setProjectionMatrix(camera.combined)

很容易解决

这一次,无论我使用投影矩阵做什么,蓝点要么向前跳2个像素,要么向前跳10-20像素,然后变为正常状态。

这是 broadSword 类的渲染方法,我在其中测试了多个场景,并且包括了最接近非弹跳的场景:

...
public void render() {
    if(!isSwinging)
        return;
    //Using a new Batch object,not the one from the Main class and
    // setting the projection matrix to camera.combined after we draw the broadsword
    //  (a blue dot) is the only way that partially works.
    batch.begin();
    batch.draw(texture,broadSwordPos.x,broadSwordPos.y);
    batch.setProjectionMatrix(camera.combined);
    batch.disableBlending();
    batch.end();
    
}
...

上面的方法是唯一可以部分起作用的方法(在我开始攻击时,宽刀向前跳跃了10到20个像素,持续了不到一秒钟的时间,然后返回到所需位置)

任何其他方法,例如使用Main类中使用的 SpriteBatch 对象 (批处理粘贴到游戏世界,粘贴到玩家,然后粘贴到大刀) 或在绘制前设置投影矩阵,将无法正常工作,并导致出现2px的弹跳问题。

这是怎么了? (请让我知道是否需要提供更多代码

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)