【问题标题】:Sprites textures behave like the same texture. Java libgdxSprites 纹理的行为类似于相同的纹理。 Java libgdx
【发布时间】:2018-09-16 10:21:19
【问题描述】:

我正在尝试制作向左或向右行走的机器人,这取决于 Tiledmap 的属性。走路效果很好,但我对纹理面有疑问。每个机器人的纹理都与最后一个机器人的纹理面向相同,就像它们使用相同的纹理一样。为了设置纹理,我使用region = Assets.instance.robotsAnimations.robotOne.getKeyFrame(timer); 并且每个机器人接缝都使用相同的纹理而不是他自己的新纹理。如何处理?

【问题讨论】:

标签: java android libgdx


【解决方案1】:

所有机器人都使用相同的 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

【讨论】:

  • 我是这么想的,而且像你写的那样做了。谢谢你的帮助。
【解决方案2】:

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

【讨论】:

  • 每个机器人都有自己的计时器。关键是所有机器人似乎共享一个区域而不是拥有自己的区域,并且每个机器人纹理都像数组中最后一个机器人的纹理一样翻转。
  • 您能否提供更多代码的详细信息?你能解释一下你的问题的更多细节吗?发送屏幕截图可能会有很大帮助。
猜你喜欢
  • 2012-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-23
  • 2019-08-04
  • 1970-01-01
  • 2016-04-17
相关资源
最近更新 更多