精灵纹理的行为类似于相同的纹理。 Java libgdx

时间:2018-09-16 10:21:19

标签: java android libgdx

我试图使机器人向左或向右行走,这取决于Tiledmap的属性。散步的效果不错,但我对纹理的贴面有疑问。每个机器人的纹理都与上一个机器人的纹理面对相同,就像它们使用相同的纹理一样。要设置纹理,我使用region = Assets.instance.robotsAnimations.robotOne.getKeyFrame(timer);,每个机器人缝都使用相同的纹理,而不是他自己的新纹理。如何处理?

2 个答案:

答案 0 :(得分:0)

这很正常,因为您正在为两个具有相同计时器的机器人调用getKeyFrame方法。 getKeyFrame方法按计时器返回动画尊重的纹理。为了解决这个问题,您应该为每个机器人设置单独的计时器变量,并在移动方向更改时使计时器为零。

答案 1 :(得分:0)

所有机器人都使用相同的TextureRegion。
您有一个静态Assets类,其中包含RobotsAnimations的一个实例,并且所有漫游器都指向RobotsAnimations中的同一动画。
因此,当一个动画区域翻转时,所有其他机器人也会使用该翻转区域。 在Robot类中创建动画,以便每个机器人都有自己的动画:

public RobotOne(PlayScreen playScreen, Rectangle rect, boolean right){
        ...

        timer = 0;
        TextureRegion[][] tmp = TextureRegion.split(Assets.instance.animationSheet,Assets.instance.animationSheet.getWidth() / cols, Assets.instance.animationSheet.getHeight() / rows);
        TextureRegion[] animationFrames = new TextureRegion[cols * rows];
        int index = 0;
        for (int i = 0; i < rows; i++){
            for (int j = 0; j < cols; j++){
                animationFrames[index++] = tmp[i][j];
            }
        }
        ownAnimation = new Animation<TextureRegion>(1/15f, animationFrames, Animation.PlayMode.LOOP)
        region = ownAnimation.getKeyFrame(timer);

        ...
    }

使用TexturePacker时,有一种更简单的方法来创建动画:
Libgdx Animation not working