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