gpt4 book ai didi

java - 在 libgdx 中复制纹理

转载 作者:行者123 更新时间:2023-11-29 05:15:54 25 4
gpt4 key购买 nike

我的 Renderer 类中有 2 个 Animation 类对象,它们包含 2 个猴子动画文件:一个描绘猴子向前,另一个描绘猴子向右。

现在,我正在尝试创建第三个动画对象,它将绘制向左走的猴子。

我正在尝试翻转第二个动画的图像(猴子向右走)并将它们添加到一个数组中,该数组最终将用作第三个对象的资源。

问题是当我翻转第二个动画的图像然后添加它们时,原始动画对象“损坏”了。当我说损坏时,我的意思是包含猴子向右走的图像的动画突然也向左“翻转”,现在我有 2 个动画对象来描述向左走的猴子。

这是处理它的代码部分:

monkeyAnimStraight = new Animation(1/20.0f, AssetsManager.getAsset("animations/monkeywalkaway.txt", TextureAtlas.class).getRegions());
monkeyAnimStraight.setPlayMode(Animation.PlayMode.LOOP_REVERSED);
monkeyAnimRight = new Animation(1/10.0f, AssetsManager.getAsset("animations/monkeywalk.txt", TextureAtlas.class).getRegions());
monkeyAnimRight.setPlayMode(Animation.PlayMode.LOOP_REVERSED);
Array<AtlasRegion> temp = AssetsManager.getAsset("animations/monkeywalk.txt", TextureAtlas.class).getRegions();
Array<AtlasRegion> keyFramesTemp = new Array<TextureAtlas.AtlasRegion>();
keyFramesTemp.addAll(temp);
for(AtlasRegion keyFrame : keyFramesTemp) {
keyFrame.flip(true, false);
}
monkeyAnimLeft = new Animation(1/20.0f, keyFramesTemp);

如您所见,我正在尝试复制原始图像以免翻转它们,但它仍然不起作用。

如何成功复制原始 AtlasRegion 数组?

最佳答案

如果您不想弄乱原始纹理区域,请创建新的纹理区域。请注意,AtlasRegions 是 TextureRegions 的子类,但您的动画真正需要的只是 TextureRegions。

无需修改 TextureRegions 的原始实例,您需要复制它们并创建新实例。简单地将它们放入一个新数组并不会复制它们。新数组仍然引用相同的原始实例。

那么这样做:

Array<TextureRegion> monkeyWalkRightRegions = AssetsManager.getAsset("animations/monkeywalk.txt", TextureAtlas.class).getRegions();
monkeyAnimRight = new Animation(1/10.0f, monkeyWalkRightRegions);
monkeyAnimRight.setPlayMode(Animation.PlayMode.LOOP_REVERSED);

Array<TextureRegion> monkeyWalkLeftRegions = new Array<TextureRegion>();

//copy and then flip each region and add it to the new array
for(TextureRegion keyFrame : monkeyWalkRightRegions ) {
TextureRegion region = new TextureRegion(keyFrame); //copy of region created
region.flip(true, false);
monkeyWalkLeftRegions.add(region);
}

monkeyAnimLeft = new Animation(1/20.0f, monkeyWalkLeftRegions );

关于java - 在 libgdx 中复制纹理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26554848/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com