Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
libGDX缩放的实现不是';不正常工作_Libgdx - Fatal编程技术网

libGDX缩放的实现不是';不正常工作

libGDX缩放的实现不是';不正常工作,libgdx,Libgdx,我想实现一个类似于“部族冲突”的缩放效果。我目前正在以几乎所有在线教程都采用的方式实现缩放。当然,我的相机有一个特定的常数,可以使我的相机以很好的速度缩放。代码确实有效 @Override public boolean zoom(float initialDistance, float distance) { float zoomAmount = -1*(distance - initialDistance)/10000; cameraHelper.addZoom(zoomAmo

我想实现一个类似于“部族冲突”的缩放效果。我目前正在以几乎所有在线教程都采用的方式实现缩放。当然,我的相机有一个特定的常数,可以使我的相机以很好的速度缩放。代码确实有效

@Override
public boolean zoom(float initialDistance, float distance) {
    float zoomAmount = -1*(distance - initialDistance)/10000;
    cameraHelper.addZoom(zoomAmount);   
    return true;
}
camera helper类完成以下简单工作:

public void addZoom(float amount) {
    setZoom(zoom + amount);
}
public void apply(OrthographicCamera camera) {
    camera.zoom = zoom;
    camera.update();
}
所以这确实有效。当我在一个连续的动作中甩两个手指,然后停止在屏幕上移动手指时,假设我使用zoomAmount=x放大,zoom会被调用一次,缩放就完成了

问题: 然而,如果我然后稍微晃动一个或两个手指,zoom会再次被调用,并使用zoomAmount=x的相同值。因此,通过摆动手指,它只需不断增加缩放并不断放大或缩小(取决于zoomAmount的当前状态)

问题: 如何让libgdx或java记住我原来的camera.zoom,就像zoom()方法中的initialDistance一样。或者,有没有其他技巧可以让我像“部族冲突”游戏一样,做出反应灵敏、平滑的缩放(不需要将手指从屏幕上移开)呢

额外信息:


我试过捏一下,效果也一样。我曾经考虑过使用一个基本的缩放值,然后使用某种百分比乘数,但是因为我必须通过设置其缩放(camera.zoom=zoom;)来更新相机,所以我想不出一个聪明的方法来添加或减去任何值,这些值不会受到不断调用zoom()的影响。任何人有什么想法吗?

你没有确切地陈述一个问题。。或者也许我不清楚,我澄清了一点,希望能有所帮助:)把它存储为一个摄像头。缩放为一些变量。。。我不明白吗?解决了,谢谢你让我明白了。问题是我想要一个变量,就像zoom方法中的initialDistance变量。在缩放期间(屏幕上有两个手指),libGDX将完全相同的值传递给initialDistance。所以我只做了一个变量,只有当initialDistance改变时才会改变。谢谢:)@Artash,你是怎么做到的,你能设置密码吗