libGDX zoom实现不正常

时间:2014-02-17 11:54:37

标签: libgdx

我想实现类似于“Clash of Clans”的缩放效果。我目前正在以几乎所有在线教程的方式实现缩放。当然还有我的相机特定常数,可以让我的相机以很快的速度进行变焦。代码可以工作。

@Override
public boolean zoom(float initialDistance, float distance) {
    float zoomAmount = -1*(distance - initialDistance)/10000;
    cameraHelper.addZoom(zoomAmount);   
    return true;
}

相机助手类做了这么简单的事情:

public void addZoom(float amount) {
    setZoom(zoom + amount);
}
public void apply(OrthographicCamera camera) {
    camera.zoom = zoom;
    camera.update();
}

所以这确实有效。当我以一个连续动作拍摄两个手指然后停止在屏幕上移动手指时,假设我使用zoomAmount = x放大,缩放被调用一次并且缩放完成。

问题: 但是,如果我稍微摇动一个或两个手指,则会再次使用zoomAmount = x的相同值调用zoom。因此,通过摆动手指,它将继续添加缩放并保持放大或缩小(取决于zoomAmount的当前状态)。

问题: 如何使libgdx或java记住我的原始camera.zoom,与zoom()方法中的initialDistance非常相似。或者,还有其他任何技巧可以做出响应和平滑的变焦(不会从屏幕上移开手指),就像游戏“Clash of Clans”一样。

额外信息:

我试过捏,效果一样。我考虑过有一个基本缩放值,然后是某种百分比乘数,但是因为我必须通过设置它的变焦来更新相机(camera.zoom = zoom;)我想不出一个加减法的巧妙技巧任何不受zoom()影响的值都会被不断调用。有什么想法吗?

0 个答案:

没有答案